app.CreatePerOwinContext(DataContext.Create);
我有上面的行来创建一个数据上下文,当我启动一个新的 MVC 5 项目时,该代码随项目一起提供。同时,我使用 autofac 在我的依赖注册器中为每个请求注入单个实例。
builder.RegisterType<DataContext>().As<IDbContext>().InstancePerRequest();
使用 owin 和 DI 容器的最佳方式是什么?
我有一个 DataContext 类,它有一个名为的静态方法Create
例如,如上所述,当我尝试在数据库类中注入记录器时,就会中断。
我也对示例项目感兴趣(如果有),在同一项目中演示 DI 和 owin。
没有必要同时使用 OWIN 和 DI 容器。我可以理解您的困惑,因为有关 CreatePerOwinContext 的文档非常稀疏,但事实是此功能仅作为“穷人的 DI”实现,并且可能应该被普通的 DI 框架取代。 Microsoft ASP.NET 团队的Hao Kung 说你是可以自由地用合适的 DI 框架替换它 http://aspnetidentity.codeplex.com/discussions/532294.
如果您不获取 OWIN 中间件创建的实例,而是将上下文注入控制器,那么您可以安全地删除它。只需记住相应地更新支架控制器即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)