C# 在任务中获取HttpContext

C# 在任务中获取HttpContext,c#,asp.net,.net-4.0,task,C#,Asp.net,.net 4.0,Task,我失去了使用任务调用的HttpContext方法。谷歌搜索似乎表明该代码应该有效。知道我做错了什么吗 void ThisMethodIsCalledFromASPNet() { var context = System.Web.HttpContext.Current; // Here I am getting valid context Task.Factory.StartNew( () => DoSomething(), Cancel

我失去了使用任务调用的HttpContext方法。谷歌搜索似乎表明该代码应该有效。知道我做错了什么吗

    void ThisMethodIsCalledFromASPNet()
    {
        var context = System.Web.HttpContext.Current;   // Here I am getting valid context

        Task.Factory.StartNew( () => DoSomething(), CancellationToken.None, TaskCreationOptions.None, 
TaskScheduler.FromCurrentSynchronizationContext());
    }

    void DoSomething()
    {
        var context = System.Web.HttpContext.Current;   // Here I am getting null
    }

您需要传入
HttpContext

void ThisMethodIsCalledFromASPNet()
{
    Task.Factory.StartNew( 
        ctx => DoSomething((HttpContext)ctx),
        System.Web.HttpContext.Current,
        CancellationToken.None, 
        TaskCreationOptions.None, 
        TaskScheduler.FromCurrentSynchronizationContext());
}

void DoSomething(HttpContext ctx)
{
    // ctx is your HttpContext
}

如果您将
DoSomething
更改为接受
HttpContext
作为参数,该怎么办?当然,但我希望有更好的方法。我认为没有比这更好的方法了。@johnsmith只有在处理请求的线程中才能获得上下文。在任何其他线程中都会得到null。