我正在开发 .Net CORE 3.1 Web API。我们使用 BackgroundHostedService 来处理耗时的操作。我们需要从该托管服务访问 HttpContext,如下所示:
public PermissionHelper(IHttpContextAccessor accessor)
{
var routeValue = accessor.HttpContext.GetRouteValue("tenantId");
}
accessor.HttpContext 在这里为空。
我试图找到一个很好的解决方法。其中之一是在 HttpContext 处理中捕获数据并将该数据传递给托管服务。Microsoft 文档中描述了该方法: Access HttpContext in ASP.NET Core (Section - HttpContext access from a background thread)
它工作正常。但是,当您向项目中添加许多不同的 nuget 包并且这些包访问 HttContext(并且所有这些都发生在 HostedService 中)时,进行此类修复会变得非常痛苦
**我的问题:** 有一些更好的修复/解决方法可以在 Http 请求中制作 HttpContext 的“快照”并将该“快照”传递给托管服务?