2

我刚刚开始学习 Task 的工作原理,并得到一个有趣的案例。我有HttpTaskAsyncHandler但如果我在 ProcessRequestAsync 中的代码调用某些任务,我将无法访问 HttpContext

  public class MyAsyncHandler : HttpTaskAsyncHandler, IReadOnlySessionState
    {
        public override async Task ProcessRequestAsync(HttpContext context)
        {
            //can use HttpContext here   
            await MyJob("data");
            //can use HttpContext here
        }

      public async Task MyJob(string data)
        {
            var func = Task.Factory.StartNew(() => Process(data));
            await func;
        }

        public string Process(string context)
        {
             **//can't use HttpContext here**
            Elmah.ErrorSignal.FromCurrentContext().Raise(ex);   
        }
}

有可能修复吗?我知道 Process 方法会在其他方面调用,但无论如何。谢谢/

4

1 回答 1

4

您是正确的,您的任务中不存在 HttpContent ,因为它位于单独的线程中。因此,您需要在 Process 方法(新线程)中访问创建 Elmah 的新实例。您可以按照上一个问题中的第二个或第三个答案,在控制台应用程序中使用 Elmah来完成您想要的。

于 2013-01-03T13:24:18.200 回答