【发布时间】:2021-08-10 05:29:19
【问题描述】:
我正在使用 .net core 3.1 api 项目,我想在我的 Task.Run 块中访问 HttpContext。这是我的代码:
// before Task.Run my HttpContextAccessor.HttpContext has correct values
Task.Run(async () =>
{
//any other method with await here
var data = await SomeMethod(config); // in that method HttpContextAccessor.HttpContext is null
}, cancellationToken)
在 asp.net 中我可以使用 friendlysynchronizationcontext 来处理它,但在 .net core 中没有同步上下文。
谁能给我一个解决方案/解释如何解决这个问题?
【问题讨论】:
-
嗨@Wojna,你能分享一下你调用HttpContextAccessor的方法吗?您如何将 HttpContextAccessor 服务注册到该方法中?
-
@Rena 我正在使用 autofac,所以我在我的服务构造函数中使用 IHttpContextAccessor contextAccessor。并在启动时注册 builder.RegisterType
().As ().SingleInstance(); -
API 在 Task 可以使用响应之前发送响应,最好从请求中提取数据,然后在单独的方法中使用它。我也被类似的场景咬过
标签: asp.net-core asynchronous async-await httpcontext