entity-framework - 使用 Owin 进行 Ninject:InRequestScope 不起作用
问题描述
我用 EF6 + Ninject + Owin 创建了一个项目。我意识到 Ninject InRequestScope 不起作用,事实上,在单个 Web Api 请求中,我的 DBContext 派生类的构造函数不止一次触发。
我的 web api 项目的启动文件是这样的:
public void Configuration(IAppBuilder app)
{
ConfigureOAuth(app);
HttpConfiguration config = new HttpConfiguration();
WebApiConfig.Register(config);
app.UseWebApi(config);
app.UseNinjectMiddleware(CreateKernel).UseNinjectWebApi(config);
}
private static IKernel CreateKernel()
{
// I have my Ninject module in a separate assembly
var kernel = new StandardKernel(new Core.Ioc.AutoBotMapper());
GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);
return kernel;
}
我的模块:
public class AutoBotMapper : NinjectModule
{
private readonly ILog _logger = LogManager.GetLogger("CORE");
public override void Load()
{
// Contesto is my DBContext
Bind<Contesto>().ToSelf().InRequestScope();
// Other Binds
Bind<ITournamentServiceFactory>().ToFactory();
Bind<ITournamentCloser>().To<TournamentCloser>();
...
}
}
我不使用引导程序“NinjectWebCommon”,因为我在网上找到了这种方法。
是否存在绕过此错误的方法?
解决方案
推荐阅读
- django - 超越简单数据处理的 Django API
- jquery - 查询:当 $(this) 在另一个 div 中时,如何遍历到前一个 div 及其子级?
- elasticsearch - 每个搜索结果的最低价格 Elasticsearch
- react-native - 使边界半径大于高度的一半
- php - PHP:循环总的某些块然后休息
- sql-server - 将名称添加到 SQL Server 中没有名称的列
- javascript - 如何访问多个 javascript 对象?
- python - super().__new__(cls, *args, **kwargs),报错TypeError: object()不带参数
- laravel - Yajra DataTable 未安装在 Laravel 5.7 上。*
- java - XMLBeans 更改默认生成的 .xsb 文件位置