我使用来自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版本)
发布于 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());
发布于 2018-05-08 18:01:48
下面是一个很好的例子
https://stackoverflow.com/questions/12276913
复制相似问题