这就是我的情况。我曾经使用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());
}
}
}