在asp.net中使用带线程的会话
我想在asp.net站点的所有页面中使用会话对象,首先我在会话中保存一个对象,如下所示,这行代码在HttpHandler中在asp.net中使用带线程的会话,asp.net,multithreading,session,Asp.net,Multithreading,Session,我想在asp.net站点的所有页面中使用会话对象,首先我在会话中保存一个对象,如下所示,这行代码在HttpHandler中 HttpContext.Current.Session["DocumnetInfo"] = doc; 之后,我创建了一个线程来操作这个文档,并将会话作为参数发送给线程,如下所示 HttpContext ctx = HttpContext.Current; Thread t = new Thread(new ThreadSta
HttpContext.Current.Session["DocumnetInfo"] = doc;
之后,我创建了一个线程来操作这个文档,并将会话作为参数发送给线程,如下所示
HttpContext ctx = HttpContext.Current;
Thread t = new Thread(new ThreadStart(() =>
{
// HttpContext.Current = ctx;
SomeMethod(ctx);
}));
t.Start();
在某种程度上,我阅读了以下内容:
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为空。
1-如何处理会话,将其发送到线程,然后将其返回到线程外。
2-除了会话之外,还有其他更好的场景吗?
3-如果客户端关闭了浏览器,我如何停止线程?您唯一能做的就是传递http上下文。请查看以下链接,您将了解为什么在多线程应用程序中无法使用会话
还有其他解决方案吗@Jalpesh VadgamaI不这样认为,它将允许您唯一能做的事情是在方法的参数中传递当前上下文。我在页面和业务层之间这样做了,但如果我打开另一个页面呢?我需要会话,或者在数据库中存储数据。我不想在数据库中存储数据。因此,我需要可靠的解决方案来取代会话,谢谢@Jalpesh Vadgama