Session丢失了!

softdeveloper 2004-11-27 06:17:53
在提交按钮的事件处理中,根据一定条件,设置session的值,如:
private void btnCommit_Click(object sender, System.EventArgs e)
{
if ( intNewID > 0 )
Session["RoadID"] = intNewID.ToString();
}

但是在Page_Load事件中Session却丢失了,
if ( Page.IsPostBack )
this.Label1.Text = Session["RoadID"].ToString().Trim();
报告未将对象引用设置到对象的实例

这些处理都在同一个页面里面,这也太夸张了吧,究竟怎么回事啊?
...全文
158 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tonybaobao 2004-11-27
  • 打赏
  • 举报
回复
如果是同一个页面里面,就用ViewState试试看。
OneDotRed 2004-11-27
  • 打赏
  • 举报
回复
你是不是使用了脚本如

window.open()
window.showModalDialog
or
window.showModalessDialog
了??
这种情况有时会丢失session。
还有一些情况也会丢失session:

Session data is lost when you use Group Policy on Web servers that host ASP.NET
http://support.microsoft.com/default.aspx?scid=kb;en-us;835386

PRB: Session Data Is Lost When You Use ASP.NET InProc Session State Mode
http://support.microsoft.com/default.aspx?scid=kb;en-us;324772

...很多啊,符合ms的一贯风格。^_^


skdhifw 2004-11-27
  • 打赏
  • 举报
回复
改成这样
if ( !Page.IsPostBack )
this.Label1.Text = Session["RoadID"].ToString().Trim();
okwinds 2004-11-27
  • 打赏
  • 举报
回复
看看你的程序里,是不是下面的这个顺序?另外看看Web.Config里的Session的设置对不对

private void InitializeComponent()
{
this.btnCommit.Click += new System.EventHandler(this.btnCommit_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
「已注销」 2004-11-27
  • 打赏
  • 举报
回复
一个是时间到期,另外在.net里面session确实会莫名其妙的丢失,不过情况很难捕捉
DotNetFreak 2004-11-27
  • 打赏
  • 举报
回复
先要搞清楚asp.net 处理request 的整个round trip过程,哪个先哪个后

Page_Load 是在 btnCommit_Click 前面执行的,当然就还没有Session["RoadID"]了
你连续按两次commit 按钮试试

110,526

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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