使用场景:
需要异步执行的业务代码中需要使用HttpContext.Current.Session,在不改变业务代码的情况下执行调用
实现步骤:
- 先在主线程中获取到请求、响应体和session
- 再在子线程中new一个上下文,将session加入Items字典,Key为“AspSession”,这样在子线程中就能使用HttpContext.Current.Session
代码如下:
var request = HttpContext.Current.Request;
var response = HttpContext.Current.Response;
var session = HttpContext.Current.Session;
Task.Factory.StartNew(() =>
{
HttpContext.Current = new HttpContext(request, response);
HttpContext.Current.Items.Add("AspSession",session);
// DoSomething();
});