C# 在任务中获取HttpContext
我失去了使用任务调用的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
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。