Я создал проект с EF6 + Ninject + Owin. Я понял, что Ninject InRequestScope не работает, на самом деле, в одном запросе Web Api конструктор моего производного класса DBContext запускается более одного раза.
Файл запуска моего проекта веб-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», так как я нашел этот подход на net.
Существует ли способ обойти эту ошибку?