asp.net Web API-网络-MVC Web API无法与Autofac Integration一起使用
我使用了来自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版本)
builder.RegisterControllers(assemblies);
builder.RegisterApiControllers(assemblies);
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());
浙公网安备 33010602011771号