我已经阅读了许多文章,为了在 4.5 之前的版本中保留 HttpContext.Current,我们应该传递处理线程的 SynchornizationContext。
这是我试图执行的代码:
TaskScheduler taskScheduler = TaskScheduler.FromCurrentSynchronizationContext();
Task.Factory.StartNew(() => HandleInquiry(currentInquiry, request),
CancellationToken.None,
TaskCreationOptions.None,
taskScheduler)
当我通过这段代码进行调试时,我可以在任务调度之前确认 taskScheduler 包含 AspNetSynchronizationContext。但是,在 HandleInquiry 方法内(在任务内), SynchronizationContext.Current 为空,而 HttpContext.Current 也为空。我确定我遗漏了一些明显的东西。