【发布时间】:2016-05-16 04:03:47
【问题描述】:
我正在尝试找出如何最好地将我的所有依赖项注入到我为 Web API 应用程序编写的自定义 OWIN 中间件中。一个简单的例子是我正在使用的 DbContext。我有一些中间件可能需要根据请求进行查询。我遇到的问题是我希望我的 DbContext 具有 WebApiRequestLifestyle 范围。我的 DbContext 是这样注册的:
container.Register<MobileDbContext>(Lifestyle.Scoped);
显然,这不起作用:
container.Options.DefaultScopedLifestyle = new WebApiRequestLifestyle();
因为我需要在我的中间件中使用 MobileDbContext,例如:
app.CreatePerOwinContext(() =>
{
return container.GetInstance<MobileDbContext>();
};
我尝试了混合生活方式,但这也不起作用,因为我认为中间件在技术上不属于“范围”生活方式。我想它可能更接近单身人士。
有没有更好的方法来设计我的应用程序来避免这个问题或通过某种自定义范围的生活方式来解决这个问题?
【问题讨论】:
标签: c# entity-framework asp.net-web-api dependency-injection simple-injector