use*_*899 18 autofac asp.net-web-api
我使用autofac的MVC集成如下:
...
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
Run Code Online (Sandbox Code Playgroud)
但现在我想用新的Web Api RTM重新创建解决方案.我想使用新的AutofacWebApiDependencyResolver类.
但是,如果我使用AutofacWebApiDependencyResolver执行此操作,则会出现此错误:
Autofac.Integration.WebApi.AutofacWebApiDependencyResolver类型似乎不实现Microsoft.Practices.ServiceLocation.IServiceLocator.
我读到我现在必须这样做才能设置解析器:
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
Run Code Online (Sandbox Code Playgroud)
但是如果我用'='设置它,它就不会被设置.它仍然是DefaultResolver ......
如果我再次使用MVC AutofacDependencyResolver类,它可以工作.
autofac和web api rtm仍然存在问题吗?(目前的集成是RC版)
nem*_*esv 50
ASP.Net Wep.API和ASP.NET MVC使用两种不同的IDependencyResolver(因为他们设计的Wep.API不依赖于ASP.NET MVC)所以你需要设置两者:
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
GlobalConfiguration.Configuration.DependencyResolver =
new AutofacWebApiDependencyResolver(container);
Run Code Online (Sandbox Code Playgroud)
因此AutofacDependencyResolver需要为常规MVC Controller派生控制器注入重要性.
而且AutofacWebApiDependencyResolver需要注入依赖于Web.API ApiController衍生控制器.
并且不要忘记通过调用在容器构建器中注册您的Api控制器(它与通常的builder.RegisterControllers方法不同):
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10232 次 |
| 最近记录: |