【发布时间】:2015-07-08 20:09:22
【问题描述】:
我正在创建的服务之一需要当前主机名作为参数(不同的请求使用不同的主机名,这会影响我的服务使用的外部资源):
public class Foo
{
public Foo(string host) {...}
}
我将其注册为作用域:
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped(s => new Foo(/* get host name for the current request */));
}
此时获取主机名最简洁的方法是什么?
更新:我想出了这个:
private static Foo GetFoo(IServiceProvider services)
{
var contextAccessor = services.GetRequiredService<IHttpContextAccessor>();
var host = contextAccessor.HttpContext.Request.Host.Value;
return new Foo(host);
}
这是一个好的/受支持的解决方案,还是一个 hack?
【问题讨论】:
标签: dependency-injection asp.net-core asp.net-core-mvc