我被困住了。我使用此处概述的方法用于 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());
}
}
}