Я застрял.Я использовал описанный здесь метод для wcf web api p6 Ninject, работающий с WCF Web API Preview 5 , однако с реализацией mvc в бета-версии все несколько иначе.Здесь есть хорошая статья http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dependency-resolver, в которой рассказывается о создании собственного настраиваемого преобразователя зависимостей, однако я хотел бы использовать ту же реализацию, которую использую для своих контроллеров представления 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());
}
}
}