udemy - ¿Cómo obtengo una instancia de IAppBuilder en otra parte de mi aplicación ASP.NET MVC 5.2.3?
libro asp net mvc 5 español (1)
Necesito construir un objeto de middleware de Owin pero no desde la clase de Startup
. Necesito construirlo desde cualquier otro lugar en mi código, por lo que necesito una referencia a la instancia AppBuilder
de la aplicación. ¿Hay alguna manera de obtener eso de cualquier otro lugar?
Simplemente podría inyectarse AppBuilder
a OwinContext
. Pero dado que el contexto de Owin solo admite el objeto IDisposable
, envuélvalo en IDisposable
objeto IDisposable
y regístrelo.
public class AppBuilderProvider : IDisposable
{
private IAppBuilder _app;
public AppBuilderProvider(IAppBuilder app)
{
_app = app;
}
public IAppBuilder Get() { return _app; }
public void Dispose(){}
}
public class Startup
{
// the startup method
public void Configure(IAppBuilder app)
{
app.CreatePerOwinContext(() => new AppBuilderProvider(app));
// another context registrations
}
}
Entonces, en todas partes de su código, tiene acceso IAppBuilder
objeto IAppBuilder
.
public class FooController : Controller
{
public ActionResult BarAction()
{
var app = HttpContext.GetOwinContext().Get<AppBuilderProvider>().Get();
// rest of your code.
}
}