Chr*_*rby 11 asp.net-mvc ninject asp.net-web-api
我被卡住了.我正在使用这里概述的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));
}
Run Code Online (Sandbox Code Playgroud)
和我收到以下错误:
类型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());
}
}
}
Run Code Online (Sandbox Code Playgroud)
我从未使用过 WebAPI,但由于 IDependencyResolver 的语义与 MVC3 中的语义完全相同,您应该能够使用相同的实现: https: //github.com/ninject/ninject.web.mvc/blob/master /mvc3/src/Ninject.Web.Mvc/NinjectDependencyResolver.cs
更新:Ninject.Web.WebAPi 扩展添加了对 ApiController 的支持
| 归档时间: |
|
| 查看次数: |
5649 次 |
| 最近记录: |