在我们的MultiTenant ASP.NET Core 2.2应用程序中,我们根据URI确定租户。
如何从IHostedService获取网站URL? HttpContext始终为空。
IHttpContextAccessor.HttpContext始终为空
public MyHostedService(ILogger<TurnTimeTask> logger,
IHttpContextAccessor httpContextAccessor)
{
_logger = logger;
_httpContextAccessor = httpContextAccessor;
}
即使在Scope中运行IHostedService,也会为httpContextAccessor.HttpContext返回NULL。 即通过范围服务注入它也不起作用。
public override Task ProcessInScope(IServiceProvider serviceProvider)
{
var request = _httpContextAccessor?.HttpContext?.Request;
//request is always null
}
是否还有其他方法可以从IHostedService获取网站的URL?
答案 0 :(得分:0)
HttpContext(非常简单的解释)。
将IHostedService视为在后台独立于任何http请求运行的东西,它在与击中控制器的请求等完全不同的上下文中运行。
HttpContext与ASP.NET Core紧密相关,而IHostedService不需要ASP.NET Core即可运行。