Asp.net web api MVC Web API不与Autofac集成一起使用

Asp.net web api MVC Web API不与Autofac集成一起使用,asp.net-web-api,autofac,Asp.net Web Api,Autofac,我使用autofac的MVC集成,如下所示: ... var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); 但是现在我想用新的WebAPI RTM重新创建解决方案。 我想使用新的AutoFacWebApidenceResolver类 但如果我使用AutoFacWebApidentiencyResolver执行此操作,则会出现以下错误:

我使用autofac的MVC集成,如下所示:

...
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
但是现在我想用新的WebAPI RTM重新创建解决方案。 我想使用新的AutoFacWebApidenceResolver类

但如果我使用AutoFacWebApidentiencyResolver执行此操作,则会出现以下错误:

类型Autofac.Integration.WebApi.autofacWebAPI依赖解析程序 似乎没有实现 Microsoft.Practices.ServiceLocation.IServiceLocator

我读到我现在必须这样做来设置解析器:

GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
但是如果我将它设置为“=”,它就不会被设置。它仍然是默认解析程序

如果我再次使用MVC AutofacDependencyResolver类,它会工作


autofac和web api rtm是否仍然存在问题?(当前集成为RC版本)

ASP.Net Wep.API和ASP.Net MVC使用两种不同的
IDependencyResolver
(因为他们将Wep.API设计为不依赖于ASP.Net MVC),因此您需要同时设置:

var container=builder.Build();
SetResolver(新的AutofacDependencyResolver(容器));
GlobalConfiguration.Configuration.DependencyResolver=
新的AutofacWebApidencyResolver(容器);
因此,需要使用
autofacdependencysolver
向常规MVC
Controller
派生控制器注入decenticies

并且需要使用AutofacWebApiDependencyResolver向Web.API
ApicController
派生控制器注入依赖项

不要忘记在容器生成器中通过调用注册Api控制器(它不同于通常的
builder.RegisterControllers
方法):

builder.registerapicontroller(Assembly.getExecutionGassembly());

下面是一个很好的例子


我在工作中再次使用AutofacDependencyResolver。谢谢你提供的信息。有一些参考链接吗?microsoft/autofac是否在那里解释了这一点?是使用ApiControler的,但如果我想将DependencyResolver强制转换为AutoFacWebApidencyResolver,则会失败。似乎是如果我通过DependencyResolver访问解析程序。Curren,我获得了MVC解析程序。WebApiResolver semms负责将参数注入APIController。如果我想解析控制器方法中的任何类型,我必须使用MVCResovler@Max很抱歉,我两次都迟到了,其他社区成员拒绝了你的编辑,因为虽然它添加了一个好的观点,但你应该留下一条评论(我知道你没有足够的声誉,但这并不遥远)因为处理答案编辑的策略非常严格,而且评论员觉得你太想修改我的答案了。不管怎样,谢谢你在你的建议中对我的帮助。