c# - 使用 Autofac 将 WebAPI UrlHelper 注入(inject)服务

标签 c# asp.net-web-api autofac

我的 WebAPI 项目中有一些 Controller 使用的服务。该服务需要生成 URL,因此理想情况下它将通过构造函数参数获取 UrlHelper

public class MyService
{
    public MyService(UrlHelper urlHelper) { ... }
}

我正在使用 Autofac 作为我的 IoC 容器。如何在容器中注册 UrlHelper?它需要一个 HttpRequestMessage,但我不知道如何获取“当前”消息。

最佳答案

使用 RegisterHttpRequestMessage 方法注册当前请求,然后您也可以像这样注册 URL 助手:

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;
}

关于c# - 使用 Autofac 将 WebAPI UrlHelper 注入(inject)服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17294257/

相关文章:

c# - XNA 没有添加到我的 Visual C# Express

c# - 如何在 C# 中添加不区分大小写的表单字段验证?

asp.net-core - 如何确保只有一个 IHostedService 实例在 .NET core 2.2 Web API 中运行

c# - Autofac:注册依赖于其他类的特定实例的类

c# - WebAPI 中 DependencyResolver.SetResolver 和 HttpConfiguration.DependencyResolver 有什么区别

asp.net-core - aspnet核心应用程序中的Autofac.Multitenant似乎无法正确解析租户范围的依赖关系

c# - GAC 中 dll 的配置文件保存位置 - 最佳实践

c# - ASP.NET Identity 2.0 检查当前用户是否在角色 IsInRole

json - 如何使用 Breeze FilterQueryOp 忽略大小写

c# - Web API 路由被忽略