丢失Session问题

清海扬波 2009-03-09 10:02:55
页面左右导航的frame框架,在点击左边的导航栏的时候右边装载页面,装载页面的时候判断Session是否为空,然后判断是否有权限,如果其中有一个不符合条件就转到某一默认页面,现在问题是使用过程中有时候出现转换到了默认页面,但是当前用户是有权限,而且是登录状态的。然后重新登陆就又好了,不知道是不是丢失Session的问题。
代码如下:

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SZ_Guid.DataAccess.Common commondal = new SZ_Guid.DataAccess.Common();
if (Session["UserID"] == null)
{
Response.Redirect("../Template.aspx");
}
else if (!commondal.CheckPermission(Session["UserID"].ToString(), "Basic04"))
{
Response.Redirect("../Template.aspx");
}
BindGrid();
AjaxPro.Utility.RegisterTypeForAjax(typeof(CleanQuery));
}
...全文
184 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuhan2010 2011-09-27
  • 打赏
  • 举报
回复
路过,学习
清海扬波 2009-03-09
  • 打赏
  • 举报
回复
csdn这个就没有这个问题,感觉应该是和我的一样的吧。
清海扬波 2009-03-09
  • 打赏
  • 举报
回复
谢谢,试试看你的方法是否能够解决问题。
cppfaq 2009-03-09
  • 打赏
  • 举报
回复
说白了session丢失实质就是:应用程序重起!

应用程序什么时候自动重起呢?

请参考:Anand在dotnetindia.com发表的文章

也就是说 asp.net 会监视应用程序目录,一但有被监视的动作发生(比如:修改了config、重命名目录等)应用程序就会自动重起当然这时你的session一定丢失了。

如果避免不了这种操作(如:重命名目录);这里我们可以用cookie存信息或存到数据库去;

注意:除了以上列出的英文条件外。目录的删除操作一定丢失session.asp.net的内部机制对待目录有点像个守财奴,它死守着目录,你创建它不会管(往里加),一但创建他就会监视该目录,若你要删除或重命名它的(动它的目录),它就发生重起了……

2.Frame中关于Session丢失

在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的。因此,网上可以找到很多相关的文章,如果网站可以采用设置Web.Config中的配置:<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="40" />把cookieless="false"改成"true"就可以了。但也同样有个小问题,就是如果页面中采用Javascript的window.location.href=''这样的方式来重定向的话,系统会认为这是另一个新的请求,产生一个新的SessionId,导致原Session同样的丢失。所以对于重定向,还是使用Response.Redirect()为好。

除了Ifrmae有丢Session问题外,frameset也有同样的问题。Frameset的问题更不移定,是有时会丢,有时不会丢,这更认人头痛,在网上找到了一个方法,在页面page_onload里添加一语句:Response.AddHeader("P3P","CP=CAO PSA OUR");FrameSet中的Session丢失问题就解决了。


cppfaq 2009-03-09
  • 打赏
  • 举报
回复
说白了session丢失实质就是:应用程序重起!

应用程序什么时候自动重起呢?

请参考:Anand在dotnetindia.com发表的文章

也就是说 asp.net 会监视应用程序目录,一但有被监视的动作发生(比如:修改了config、重命名目录等)应用程序就会自动重起当然这时你的session一定丢失了。

如果避免不了这种操作(如:重命名目录);这里我们可以用cookie存信息或存到数据库去;

注意:除了以上列出的英文条件外。目录的删除操作一定丢失session.asp.net的内部机制对待目录有点像个守财奴,它死守着目录,你创建它不会管(往里加),一但创建他就会监视该目录,若你要删除或重命名它的(动它的目录),它就发生重起了……

2.Frame中关于Session丢失

在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的。因此,网上可以找到很多相关的文章,如果网站可以采用设置Web.Config中的配置:<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="40" />把cookieless="false"改成"true"就可以了。但也同样有个小问题,就是如果页面中采用Javascript的window.location.href=''这样的方式来重定向的话,系统会认为这是另一个新的请求,产生一个新的SessionId,导致原Session同样的丢失。所以对于重定向,还是使用Response.Redirect()为好。

除了Ifrmae有丢Session问题外,frameset也有同样的问题。Frameset的问题更不移定,是有时会丢,有时不会丢,这更认人头痛,在网上找到了一个方法,在页面page_onload里添加一语句:Response.AddHeader("P3P","CP=CAO PSA OUR");FrameSet中的Session丢失问题就解决了。


62,267

社区成员

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

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

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

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