我有一个mvc动作方法,类似于下面的构造。
public ActionResult About()
{
System.Web.HttpContext.Current.Session["testValue"] = "about";
ViewBag.Message = "Your application description page.";
var sc = SynchronizationContext.Current;
Task t = Task.Run(( ) => {
string sessionValue = null;
sc.Post((state)=> {
//How do I access Session value here ?
},null);
});
return View();
}
我想知道如何访问"会话价值"在sc.Post
方法?基本上,当新线程启动时,它需要访问父线程的HttpSession。
答案 0 :(得分:2)
由于Session
是从当前线程派生的,因此您必须从原始请求线程注入会话:
var session = System.Web.HttpContext.Current.Session;
然后在线程委托中使用session
。请注意,如果原始请求被终止,则可以在此期间破坏会话。
session["testValue"] = "abc";