我的 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/