注入的WebAPI UrlHelper到使用Autofac服务 [英] Inject WebAPI UrlHelper into service using Autofac
问题描述
我在我的WebAPI项目中使用由几个控制器的服务。该服务需要生成URL,因此最好是将通过构造函数的参数获得 UrlHelper
。
I have a service used by a few controllers in my WebAPI project. The service needs to generate URLs, so ideally it would get a UrlHelper
via a constructor parameter.
public class MyService
{
public MyService(UrlHelper urlHelper) { ... }
}
我使用Autofac作为我IoC容器。我怎样才能在容器中注册 UrlHelper
?它需要一个的Htt prequestMessage
,我无法弄清楚如何获得当前的消息。
I'm using Autofac as my IoC container. How can I register UrlHelper
in the container? It needs a HttpRequestMessage
and I can't figure out how to get the "current" message.
推荐答案
使用 RegisterHtt prequestMessage
方法注册当前请求,那么你也可以注册登记网址帮手,像这样:
Use the RegisterHttpRequestMessage
method to register the current request and then you can register also register the URL helper like so:
public static IContainer SetupContainer(HttpConfiguration config)
{
var containerBuilder = new ContainerBuilder();
// Register your Web API.
containerBuilder.RegisterApiControllers(Assembly.GetExecutingAssembly());
containerBuilder.RegisterHttpRequestMessage(config);
containerBuilder.Register(x => new UrlHelper(x.Resolve<HttpRequestMessage>()));
containerBuilder.RegisterWebApiFilterProvider(config);
containerBuilder.RegisterWebApiModelBinderProvider();
// Register your other types...
var container = containerBuilder.Build();
// Set the dependency resolver to be Autofac.
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
return container;
}
这篇关于注入的WebAPI UrlHelper到使用Autofac服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!