Wydanie przy użyciu ASP.Net MVC 4 Web API z Ninject.Web.WebApi

Usiłuję użyć nowego szablonu projektu Web API ASP.Net MVC 4 z Ninject, ale trafiłem na ścianę na następujący błąd:

Metoda „GetFilters” w typie „Ninject.Web.WebApi.Filter.DefaultFilterProvider” z zespołu „Ninject.Web.WebApi, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = c7192dc5380945e7” nie ma implementacji.

Tworzę nowy projekt w Visual Studio 2010 przy użyciu szablonu ASP.Net MVC 4 -> Web API i używam najnowszych pakietów Ninject NuGet:

Ninject 3.0.1.10Ninject.Web.Common 3.0.0.7Ninject.Web.WebApi 3.0.0.2

Próbowałem rozwiązania przedstawionego wto pytanie jednak nie miałem szczęścia - jeśli usunę odniesienie do Ninject.WebApi, to MVC nigdy nie będzie angażować Ninject. Zauważam też, że wspominająNinject.MVC3 jednak używam nowegoNinject.WebApi podłącz.

Używam domyślnego kodu wiązania wNinjectWebCommon.cs który jest tworzony podczas instalacji NuGet i próbuje zarejestrować jedną prostą usługęRegisterServices ()

[assembly: WebActivator.PreApplicationStartMethod(typeof(mkts.web.App_Start.NinjectWebCommon), "Start")]
[assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(mkts.web.App_Start.NinjectWebCommon), "Stop")]

namespace mkts.web.App_Start
{
    using System;
    using System.Web;

    using Microsoft.Web.Infrastructure.DynamicModuleHelper;

    using Ninject;
    using Ninject.Web.Common;
    using mkts.service;

    public static class NinjectWebCommon 
    {
        private static readonly Bootstrapper bootstrapper = new Bootstrapper();

        /// <summary>
        /// Starts the application
        /// </summary>
        public static void Start() 
        {
            DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
            DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
            bootstrapper.Initialize(CreateKernel);
        }

        /// <summary>
        /// Stops the application.
        /// </summary>
        public static void Stop()
        {
            bootstrapper.ShutDown();
        }

        /// <summary>
        /// Creates the kernel that will manage your application.
        /// </summary>
        /// <returns>The created kernel.</returns>
        private static IKernel CreateKernel()
        {
            var kernel = new StandardKernel();
            kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
            kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();

            RegisterServices(kernel);
            return kernel;
        }

        /// <summary>
        /// Load your modules or register your services here!
        /// </summary>
        /// <param name="kernel">The kernel.</param>
        private static void RegisterServices(IKernel kernel)
        {
            //Test binding
            kernel.Bind<IStudentService>().To<StudentService>();
        }        
    }
}

Mój kontroler:

namespace mkts.web.Controllers
{
    public class HomeController : Controller
    {
        private readonly IStudentService studentService;

        public HomeController(IStudentService studentService)
        {
            this.studentService = studentService;
        }


        public ActionResult Index()
        {
            return View();
        }
    }
}

Z góry dziękuję za wszelką pomoc.

questionAnswers(1)

yourAnswerToTheQuestion