Это два разных подхода к настройке ядра.Подход, который вы использовали, требует изменения Global.asax
.Пакет NuGet использует эту новую функцию ASP.NET 4, которая позволяет регистрировать динамические модули при запуске приложения.Поскольку авторы пакета NuGet не хотели связываться с Global.asax
, поскольку там может быть какой-то другой существующий код, они предпочли использовать этот отдельный файл для настройки ядра.
Два подхода не являютсясовместимы, и вы никогда не должны использовать их в одном приложении.Новая версия также уже содержит NinjectDependencyResolver
, поэтому вам больше не нужно писать или устанавливать какие-либо пользовательские DependencyResolver.SetResolver
.
Все, что вам нужно сделать, это использовать статический метод RegisterServices
в классе загрузчика для настройкиваше ядро:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<ISomeControllerDependency>().To<SomeConcreteImpl>();
}
И если у вас было несколько модулей NInject, которые вы хотели загрузить:
private static void RegisterServices(IKernel kernel)
{
kernel.Load(
new NhibernateModule(),
new ServiceModule(),
new RepoModule()
);
}
Вот и все.Не забудьте удалить любую трассировку NInject из Global.asax
, чтобы избежать конфликтов.
Я думаю, причина того, что ваш код не работал с первым подходом, заключается в том, что вы не загружали модули вRegisterServices
метод.