首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

丢失Session有关问题

2012-03-23 
丢失Session问题页面左右导航的frame框架,在点击左边的导航栏的时候右边装载页面,装载页面的时候判断Sessi

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

C# code
select a表名.[编号],a表名.[姓名],b表名.[名称] as [类别] from a表名,b表名 where a表名.[类别]=b表名.[id]


[解决办法]
说白了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丢失问题就解决了。


热点排行