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.
}
}