【问题标题】:HttpTaskAsyncHandler and HTTP contextHttpTaskAsyncHandler 和 HTTP 上下文
【发布时间】:2013-01-03 10:05:29
【问题描述】:

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

【问题讨论】:

  • 你为什么要把工作推到线程池然后awaiting呢?为什么不只在请求线程上完成工作?

标签: elmah asp.net-4.5 httptaskasynchandler


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多