首页 > 解决方案 > 使用 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”,因为我在网上找到了这种方法。

是否存在绕过此错误的方法?

标签: entity-frameworkowinninjectninject.web

解决方案


推荐阅读