Я застрял. Я использовал метод, описанный здесь для wcf web api p6 Ninject, работающий с веб-API WCF Preview 5, однако в бета-версии реализована реализация mvc в бета-версии. Здесь есть хорошая статья http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dependency-resolver, в которой говорится о создании собственного пользовательского преобразователя зависимостей, однако я бы хотел использовать ту же реализацию я ' m для моих контроллеров просмотра mvc... например Ninject. Я пробовал несколько вещей, основанных на примере IoC Unity в этой статье, но пока ничего не вышло. Любая помощь, указывающая на меня в правильном направлении, была бы очень признательна. Я тоже буду рыть самостоятельно. Спасибо заранее!
Здесь, где я нахожусь. Я использовал WebActivator для загрузки кода, но с тех пор я отбросил его в Application_Start(), чтобы извлечь еще одну вещь из уравнения.
protected void Application_Start()
{
var kernel = new StandardKernel(new MyNinjectModule());
GlobalConfiguration.Configuration.ServiceResolver.SetResolver(new NinjectDependencyResolver(kernel));
}
И я получаю следующую ошибку:
Тип Ninject.Web.Mvc.NinjectDependencyResolver, похоже, не реализует Microsoft.Practices.ServiceLocation.IServiceLocator.
Имя параметра: commonServiceLocator
Найден решение
Возможно, будет/будет более элегантный способ, но теперь это работает для меня. Я также добавляю свой обработчик сообщений.
[assembly: WebActivator.PreApplicationStartMethod(typeof(MyApp.AppStart.ApiBootstrapper), "Start")]
namespace MyApp.AppStart
{
public class ApiBootstrapper
{
public static void Start()
{
var kernel = new StandardKernel(new MyNinjectModule());
var resolver = new NinjectDependencyResolver(kernel);
GlobalConfiguration.Configuration.ServiceResolver.SetResolver(resolver.GetService, resolver.GetServices);
GlobalConfiguration.Configuration.MessageHandlers.Add(new ApiAuthHandler());
}
}
}