首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MVC Web API无法与Autofac集成一起使用

MVC Web API无法与Autofac集成一起使用
EN

Stack Overflow用户
提问于 2012-09-05 15:55:14
回答 2查看 12.2K关注 0票数 23

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

...
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

但现在我想用新的Web Api RTM重新创建解决方案。我想使用新的AutofacWebApiDependencyResolver类。

但是,如果我使用AutofacWebApiDependencyResolver执行此操作,则会得到以下错误:

Autofac.Integration.WebApi.AutofacWebApiDependencyResolver类型似乎未实现Microsoft.Practices.ServiceLocation.IServiceLocator.

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

GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);

但是如果我用'=‘设置它,它就不会被设置。仍然是DefaultResolver..。

如果我再次使用MVC AutofacDependencyResolver类,它可以工作。

autofac和web api rtm还有问题吗?(当前集成为RC版本)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-05 16:01:49

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);

因此,需要AutofacDependencyResolver来向常规的MVC Controller派生控制器注入依赖项。

并且需要AutofacWebApiDependencyResolver来向Web.API ApiController派生控制器注入依赖项。

别忘了使用调用在容器构建器中注册Api控制器(它与通常的builder.RegisterControllers方法不同):

builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
票数 56
EN

Stack Overflow用户

发布于 2018-05-08 18:01:48

下面是一个很好的例子

Using Autofac with Web Api

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12276913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档