多线程与Session的访问

jilate 2008-11-10 02:09:46
网上可以搜索到很多关于通过asp.net长时间执行任务,通过多线程来解决的方法。
我的代码如下:其余多余代码省略
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Session["IsExecExport"] != null)
{
TextBox1.Text = Session["IsExecExport"].ToString();
}
}
}

protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("Default.aspx");
}

protected void Button1_Click(object sender, EventArgs e)
{
System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(Add));
//t.IsBackground = true;
t.Start();
}

private void Add()
{
Session["IsExecExport"] = "1";
}
}

问题如下:
执行Add中访问Session的时候就抛出异常
:只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 <configuration>\<system.web>\<httpModules> 节中包括 System.Web.SessionStateMod 或自定义会话状态模块。
及时在page中添加EnableSessionState="true" 和web.config中添加<pages enableSessionState="true" />也无济于事
web.config中sessionmode为StateServer或者Inproc都试过,也都会有这个错误。
请问如何在多线程内访问Session?
如果该session是在多线程内建立的,则抛出异常,如果是多线程外建立的是可以访问并且修改,但是修改是局部的,执行完后又变回去了。
百思不得其解,谁能说说其中的原理
...全文
827 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
longjxchina 2011-12-02
  • 打赏
  • 举报
回复
先在主线程设置Session值,在多线程就能访问到了
wapit 2008-11-20
  • 打赏
  • 举报
回复
我的问题解决了. 多线程是访问不到Session的. 我采用Cache解决了.
woaixueyu 2008-11-18
  • 打赏
  • 举报
回复
楼主可以从这样来想,session其实对于一个多线称来说 是公共资源了,那么如果你在任意一个线程中调用它 , 就需要lock
wapit 2008-11-18
  • 打赏
  • 举报
回复
我也遇到这个问题了......
maihuasen1978 2008-11-12
  • 打赏
  • 举报
回复
如果服务器是自己的将服务中SessionState这个服务启动,然后变成自动!
wanghao3616 2008-11-11
  • 打赏
  • 举报
回复
你那是设置 session 的状态 而没有设置 声明这个 session

if(Session["IsExecExport"] == null)
Session.Add("IsExecExport","1");
else
Session["IsExecExport"] = "1";

jilate 2008-11-11
  • 打赏
  • 举报
回复
没人出现过这种错误?
jilate 2008-11-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
页面没设置使Session
[/Quote]
<%@ Page Language="C#" EnableSessionState="true" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
这样设置已经是使用了吧
hehanbo1 2008-11-10
  • 打赏
  • 举报
回复
帮顶
wuyq11 2008-11-10
  • 打赏
  • 举报
回复
页面没设置使Session

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧