HttpTaskAsyncHandler和HTTP上下文

时间:2013-01-03 10:05:29

标签: elmah asp.net-4.5 httptaskasynchandler

我刚开始学习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方法可以在其他方面调用,但无论如何。 感谢/

1 个答案:

答案 0 :(得分:4)

你的任务中不存在HttpContent是正确的,因为它在一个单独的线程中。因此,您需要访问在Process方法(新线程)中创建Elmah的新实例。您可以按照上一个问题Using Elmah in a Console Application中的第二个或第三个答案来完成您想要的任务。