注入的WebAPI UrlHelper到使用Autofac服务 [英] Inject WebAPI UrlHelper into service using Autofac

查看:800
本文介绍了注入的WebAPI UrlHelper到使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆