Кто-нибудь знает хорошее руководство по работе Ninject 2 в ASP.NET MVC? - PullRequest
5 голосов
/ 07 июня 2009

Я борюсь с документацией, чтобы выяснить, что именно мне нужно. Документация (насколько я понимаю) для 1.5 в любом случае.

N.B: Я не хочу расширять NinjectHttpApplication

Я настроил его на использование NinejctControllerFactory в Application_Start () , но я получаю исключение нулевой ссылки на KernelContainer.Kernel при попытке создать контроллер. Где мне настроить ядро, если я не расширяю NinjectHttpApplication?

Ответы [ 4 ]

5 голосов
/ 18 июня 2009

Поскольку вы уже расширяете другой класс, производный от HttpApplication, я думаю просто скопировать соответствующий исходный код из класса NinjectHttpApplication в расширенный класс HttpApplication. Вместо того, чтобы вырезать и вставить его, просто посмотрите на source для NinjectHttpApplication в проекте расширения Ninject2 Ninject.Web.Mvc здесь .

Я бы специально скопировал материал в Application_Start () и Application_Stop () . Другие способы регистрации контроллеров хороши, но вы можете зарегистрировать свои контроллеры так, как пожелаете. В Application_Start () вы заметите, что ядро ​​создается путем вызова чисто виртуальной функции CreateKernel () - вы можете просто создать встроенное ядро ​​прямо здесь. Кроме того, обратите внимание на наличие свойства Kernel в классе NinjectHttpApplication - я также скопировал бы это в ваш собственный класс. Похоже, что здесь подразумевается, что производный от HttpApplication класс эффективно служит в качестве KernelContainer.

Отказ от ответственности: я не пробовал это, чтобы увидеть, работает ли это, хотя я скоро буду. Я использовал Ninject 1.x в веб-проекте и собираюсь перейти на Ninject 2 в ближайшем будущем; тем не менее, я, вероятно, смогу получить информацию непосредственно из NinjectHtppApplication. Удачи!

2 голосов
/ 14 сентября 2009

Отсутствие возможности получения из NinjectHttpApplication не имеет большого значения. Это не слишком много, но очень удобно. Предложение Питера Мейера - путь. Просто проверьте источник здесь . Вам, однако, придется наследовать от IHaveKernel.

2 голосов
/ 12 августа 2009

Посмотрите на этот пост в блоге. Это должно помочь прояснить процесс настройки ядра.

http://www.kevinrohrbaugh.com/blog/2009/8/7/using-ninject-2-with-aspnet-mvc.html

0 голосов
/ 08 июня 2009

Вам все равно следует вставить код, который у вас есть, чтобы люди могли видеть, где вы могли ошибиться.

Я думаю, этот код должен быть размещен в вашем Application_Start:

ControllerBuilder.Current.SetControllerFactory(typeof(NinjectControllerFactory));
KernelContainer.Kernel = new StandardKernel(
    new AutoControllerModule(Assembly.GetExecutingAssembly();
);
...