У меня была та же проблема, и я исправил ее, вернувшись к расширению 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 прекрасно работает.