У меня была такая же проблема, и я исправил ее, переключившись на расширение NinjectHttpApplication
, а не на подход NinjectWebCommon.cs. См. https://github.com/ninject/ninject.web.mvc/wiki/Setting-up-an-MVC3-application для более подробной информации.
для того, чтобы обновления Ninject 3 на работу, мне пришлось добавить следующие привязки к моим обязательным модулям:
Bind<Func<IKernel>>().ToMethod(ctx =>() => new Bootstrapper().Kernel);
Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
Я думаю, что корень проблемы заключается в том, что NinjectWebCommon.cs получает вызывается перед нанесением полностью осознает свой собственный контекст, поэтому Entity Framework не может понять, как разбирать строки подключения, если контекст создается как часть настройки ваших привязок. Это не будет проблемой для многих проектов, но наша система использует конфигурацию базы данных для определения того, какие модули Ninject загружаются в первую очередь. Вероятно, метод Global Application_Start
вызывается в какой-то более поздний момент жизненного цикла приложения, поэтому настройка привязок в Global работает просто отлично.