How do I access HttpContext.Current in Task.Factory.StartNew?

Tim Tom picture Tim Tom · May 19, 2012 · Viewed 17.2k times · Source

I want to access HttpContext.Current in my asp.net application within

Task.Factory.Start(() =>{
    //HttpContext.Current is null here
});

How can I fix this error?

Answer

nemesv picture nemesv · May 19, 2012

Task.Factory.Start will fire up a new Thread and because the HttpContext.Context is local to a thread it won't be automaticly copied to the new Thread, so you need to pass it by hand:

var task = Task.Factory.StartNew(
    state =>
        {
            var context = (HttpContext) state;
            //use context
        },
    HttpContext.Current);