ASP.Net MVC3: учебник Стивена Сандерсона с использованием ошибки Ninject

Ошибки моего проекта с вызовами global.asax Application_Start: ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());

namespace SportsStore.WebUI.Infrastructure
{
    public class NinjectControllerFactory : DefaultControllerFactory 
    {
        private IKernel ninjectKernel;

        public NinjectControllerFactory()
        {
            ninjectKernel = new StandardKernel();
            AddBindings();
        }

        protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
        {
            return controllerType == null ? null : (IController)ninjectKernel.Get(controllerType);
        }

        private void AddBindings()
        {
            // put additional bindingers here
        }
    }

СТЕК ОШИБОК:

Locating source for 'c:\Projects\Ninject\Maintenance2.2\ninject\src\Ninject\Infrastructure\Multimap.cs'. 
Checksum: MD5 {de 1d cc 43 b7 22 44 a5 8d 8b 50 ed 23 dc 4 28} 
The file 'c:\Projects\Ninject\Maintenance2.2\ninject\src\Ninject\Infrastructure\Multimap.cs' does not exist. 
Looking in script documents for 'c:\Projects\Ninject\Maintenance2.2\ninject\src\Ninject\Infrastructure\Multimap.cs'... 
Looking in the projects for 'c:\Projects\Ninject\Maintenance2.2\ninject\src\Ninject\Infrastructure\Multimap.cs'. 
The file was not found in a project. Looking in directory 'C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\'... 
Looking in directory 'C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfc\'... 
Looking in directory 'C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfcsrc\atl\'...
Looking in directory 'C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\'... 
The debugger will ask the user to find the file: c:\Projects\Ninject\Maintenance2.2\ninject\src\Ninject\Infrastructure\Multimap.cs. 
The user pressed Cancel in the Find Source dialog. 
The debug source files settings for the active solution have been modified so that the debugger will not ask the user to find the file: c:\Projects\Ninject\Maintenance2.2\ninject\src\Ninject\Infrastructure\Multimap.cs. 
The debugger could not locate the source file 'c:\Projects\Ninject\Maintenance2.2\ninject\src\Ninject\Infrastructure\Multimap.cs'.

person Susan    schedule 01.09.2011    source источник
comment
Кстати, я добавил ссылку на клиент Ninject 4.0 в свой проект WebUI.   -  person Susan    schedule 01.09.2011
comment
Вы пытались использовать пакет nuget Ninject.MVC3? nuget.org/List/Packages/Ninject.MVC3/2.2.2.0   -  person Peter    schedule 01.09.2011
comment
Вы следовали процедуре установки? Насколько я знаю, Стивен привел пример, в котором вы можете использовать Install-Package Ninject -Project SportsStore.WebUI для установки Ninject и немедленной ссылки на него?   -  person Husein Roncevic    schedule 01.09.2011
comment
Да, я выполнил процедуру, описанную в книге: Install-Package Ninject -Project SportsStore.WebUI   -  person Susan    schedule 01.09.2011
comment
Я не пробовал пакет nuget Ninject MVC3... Я следую инструкциям в книге Сандерсона. Install-Package Ninject-Project SportsStore.WebUI   -  person Susan    schedule 01.09.2011
comment
Если это не сработает, попробуйте удалить ссылку Ninject из SportsStore.WebUI (и я думаю, что она также добавлена ​​в модульный тест и модельный проект). Перейдите на страницу ninject.org/download и загрузите ее оттуда. А затем вручную добавьте ссылку на только что загруженную DLL Ninject. У меня не было той проблемы, о которой вы упоминаете, поэтому довольно странно, что вы получаете эти сообщения об ошибках.   -  person Husein Roncevic    schedule 01.09.2011
comment
Какую из dll вы использовали...??? клиент 4.0, 4.0 полный???   -  person Susan    schedule 01.09.2011
comment
Кроме того, я видел страницу в Интернете, предлагающую удалить и переустановить пакет Manage Nuget и добавить Ninject вручную. Это поместило ссылку в мой проект, но все еще имела ту же проблему.   -  person Susan    schedule 01.09.2011


Ответы (1)


Я предлагаю использовать официальное расширение Ninject MVC3. Пакет NuGet Ninject.MVC3 настроит все за вас, чтобы вы могли начать внедрять зависимости в свои контроллеры.

Замена фабрики контроллеров больше не является предпочтительным способом для MVC3. В этом выпуске команда разработчиков MVC предложила вместо этого использовать DependencyResolver. Расширение Ninject MVC3 использует этот подход.

Прочтите документацию по адресу https://github.com/ninject/ninject.web.mvc/wiki/MVC3 для получения дополнительной информации.

person Remo Gloor    schedule 01.09.2011
comment
Право на! 100%... Мои 2 цента :) Затем выделите свои зависимости в отдельный проект и используйте модули. - person CrazyCoderz; 01.09.2011
comment
Я попробовал расширение Ninject MVC3, но у меня все еще возникает та же проблема, что и ninjectKernel = new StandardKernel() возвращает значение null, а - person Susan; 02.09.2011
comment
Извините, не правильно закончил. утверждение «private IKernel ninjectKernal возвращает NULL, а ninjectKernel = new StandardKernel заявляет, что он может найти Multimap.cs ?????? - person Susan; 02.09.2011
comment
Я пересобрал и снова запустил, и на этот раз он заявляет, что не может найти: StandardKernel.cs - person Susan; 02.09.2011
comment
Можете ли вы опубликовать трассировку стека? То, что вы предоставили до сих пор, - это просто попытка разрешить исходный файл, который совсем не помогает. - person Remo Gloor; 08.09.2011