asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

Asp.net的Session过期


发布日期:2019年01月01日
 
Asp.net的Session过期

目录删除及重命名操作

如果你发现session突然无理由的丢失而当你认真的检查代码并且排除其它常规可能丢失的可能性时你可能会像我一样几乎要接近崩溃~!

后来发现问题出在我用代码创建一个临时目录然后删除临时目录的删除操作上

现在和大家分享下希望对碰到类似钉子的朋友有用……

说白了session丢失实质就是应用程序重起!

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

请参考Anand在发表的文章

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

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

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

Frame中关于Session丢失

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

除了Ifrmae有丢Session问题外frameset也有同样的问题Frameset的问题更不移定是有时会丢有时不会丢这更认人头痛在网上找到了一个方法在页面page_onload里添加一语句ResponseAddHeader(PPCP=CAO PSA OURFrameSet中的Session丢失问题就解决了

上一篇:ASP.Net状态管理的四种状态类型

下一篇:ASP.NET学习之结构和类