Owin上下文,每个请求使用一个实例

问题描述 投票:3回答:1
app.CreatePerOwinContext(DataContext.Create);

我在上面一行创建了一个数据上下文,当我启动一个新的MVC 5项目时,此代码随项目一起提供。同时,我正在使用autofac在依赖项注册器中为每个请求注入单个实例。

builder.RegisterType<DataContext>().As<IDbContext>().InstancePerRequest();

使用owin和DI容器的最佳方法是什么?

我有一个DataContext类,它具有一个如上所述的称为Create的静态方法,例如,当我尝试在数据库类中插入记录器时,此中断。

我也对一个示例项目感兴趣,如果有的话,它说明了同一项目中的DI和owin。

c# asp.net-mvc asp.net-mvc-5 owin
1个回答
2
投票

不必同时使用OWIN和DI容器。我能理解您的困惑,因为有关CreatePerOwinContext的文档非常稀疏,但事实是,此功能仅作为“穷人的DI”实现,并且可能应由常规的DI框架代替。微软ASP.NET团队的郝恭(Hao Kung)说您free to replace it with a proper DI framework

如果您不是要获取由OWIN中间件创建的实例,而是将上下文注入控制器中,则可以安全地将其删除。只要记住要相应地更新脚手架控制器即可。

© www.soinside.com 2019 - 2024. All rights reserved.