Использование Ninject с Asp.NET Web API Beta ApiController

Я застрял. Я использовал метод, изложенный здесь для wcf web api p6Ninject работает с 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());
        }
    }
}

Ответы на вопрос(5)

Ваш ответ на вопрос