asp.net-web-api – MVC Web API不能与Autofac集成

前端之家收集整理的这篇文章主要介绍了asp.net-web-api – MVC Web API不能与Autofac集成前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用autofac的MVC集成,如下所示:
...
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

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

但是如果我这样做与AutofacWebApiDependencyResolver我得到这个错误

The type Autofac.Integration.WebApi.AutofacWebApiDependencyResolver
does not appear to implement
Microsoft.Practices.ServiceLocation.IServiceLocator.

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

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

但是如果我使用’=’设置它,则不会设置。它仍然是DefaultResolver …

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

自动装载机和网络应用程序仍然存在问题? (目前的一体化是RC版)

解决方法

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控制器派生控制器注入。

并且需要AutofacWebApiDependencyResolver来将依赖关系注入到Web.API ApiController派生控制器中。

并且不要忘记在您的容器构建器中使用调用注册您的Api控制器(与通常的builder.RegisterControllers方法不同):

builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

猜你在找的asp.Net相关文章