我想通过我的asp.net网站中的所有页面使用Session对象,首先我在这样的会话中保存一个对象,这行代码在HttpHandler中
HttpContext.Current.Session["DocumnetInfo"] = doc;
之后,我创建了一个操作此doc的线程,并将会话作为参数发送到线程,如下所示
HttpContext ctx = HttpContext.Current;
Thread t = new Thread(new ThreadStart(() =>
{
// HttpContext.Current = ctx;
SomeMethod(ctx);
}));
t.Start();
和在SomeMethod我读了会话如下:
private void SomeMethod ( HttpContext ctx)
{
DocResultsBLL doc = (DocResultsBLL)ctx.Session["DocumnetInfo"];
// Here is the logic of the manipulation
// then save the doc in the session back
ctx.Session["DocumnetInfo"]=doc;
Response.Redirect("ResultsPage.aspx");
}
问题是我无法在结果页面中读取会话.HttpContext.Current为null。 1 - 如何使用会话,将其发送到线程,然后将其恢复到线程之外。 2-除会话之外还有其他任何方案更好吗? 3-如果客户端关闭浏览器,我该如何停止线程?
答案 0 :(得分:0)
唯一可以做的就是传递http上下文,请参阅以下链接,您将了解为什么在多线程应用程序中无法使用会话。