知识大全 Asp.Net处理Session失效解决方案
Posted 文件
篇首语:学而时习之,不亦说乎?本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Asp.Net处理Session失效解决方案相关的知识,希望对你有一定的参考价值。
Asp.Net处理Session失效解决方案 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
检查ASP NET Session是否失效 是否超时 默认是 分钟 设置的方法是Session TimeOut= ;或者您可以设置到更高 这个数值的单位是分钟 大家视情况而定
检查代码有无Session Abandon()之类的 一旦调用 Abandon 方法 当前会话不再有效 同时会启动新的会话
ASP NET中使用了ACCESS数据库 而且数据库是放在bin目录中的 解决方法是不要放会更新的文件在BIN目录中
从同一个页面传到另一个页面才能延续同一个session 也就是说session不可跨域 同时客户端一关闭浏览器或一关闭浏览页 Session也消失了 再次访问时又会创建新的Session 但还会在服务器上存活等待超时 只是调用不到了 另外比如在第一个页面置了SESSION 然后REDIRECT去第二个页面 解决方法是在REDIRECT中设置endResponse为FALSE
Iframe丢Session的原因 session是客户端和服务器端共同认证的 客户端存储标识 通过附加在页面的头发送给服务器端 服务器进行识别 如果符合条件就可以获得相应的session操作权
但如果页面是来自框架的 而框架的父页和框架不是一个站点的话 客户端默认是禁止向页面附加头信息的 这样服务器端就无法识别客户端框架里面的页面 自然不能操作Session 解决办法: Response AddHeader( P P CP=CAO PSA OUR ) 或者在Window服务中将 State Service 启动
有些杀病毒软件会去扫描您的Web Config文件 那时Session肯定掉 这是微软的说法 解决办法: 使杀病毒软件屏蔽扫描Web Config文件(程序运行时自己也不要去编辑它)
ASP NET默认配置下 Session莫名丢失的原因及解决办法
正常操作情况下Session会无故丢失 因为程序是在不停的被操作 排除Session超时的可能 另外 Session超时时间被设定成 分钟 不会这么快就超时的
现在我就把原因和解决办法写出来
ASP NET Session失效的原因
由于程序是默认配置 所以Web Config文件中关于Session的设定如下
<sessionState mode= InProc stateConnectionString= tcpip= :
sqlConnectionString= data source= ;Trusted_Connection=yes cookieless= true
timeout= />
我们会发现sessionState标签中有个属性mode 它可以有 种取值 InProc StateServer?SQLServer(大小写敏感) 默认情况下是InProc 也就是将Session保存在进程内(IIS 是aspnet_wp exe 而IIS 是W wp exe) 这个进程不稳定 在某些事件发生时 进程会重起 所以造成了存储在该进程内的Session丢失
哪些情况下该进程会重起呢?微软的一篇文章告诉了我们
配置文件中processModel标签的memoryLimit属性
Global asax或者nfig文件被更改
Bin文件夹中的Web程序(DLL)被修改
杀毒软件扫描了一nfig文件
更多的信息请参考PRB: Session variables are lost intermittently in applications
ASP NET Session失效的解决办法
前面说到的sessionState标签中mode属性可以有三个取值 除了InProc之外 还可以为StateServer SQLServer 这两种存Session的方法都是进程外的 所以当aspnet_wp exe重起的时候 不会影响到Session
现在请将mode设定为StateServer StateServer是本机的一个服务 可以在系统服务里看到服务名为 State Service的服务 默认情况是不启动的 当我们设定mode为StateServer之后 请手工将该服务启动
这样 我们就能利用本机的StateService来存储Session了 除非电脑重启或者StateService崩掉 否则Session是不会丢的(因Session超时被丢弃是正常的)
除此之外 我们还可以将Session通过其他电脑的StateService来保存 具体的修改是这样的 同样还在sessionState标签中 有个stateConnectionString= tcpip= : 属性 其中有个ip地址 默认为本机( ) 你可以将其改成你所知的运行了StateService服务的电脑IP 这样就可以实现位于不同电脑上的程序互通Session了
如果你有更高的要求 需要在服务期重启时Session也不丢失 可以考虑将mode设定成SQLServer 同样需要修改sqlConnectionString属性 关于使用SQLServer保存Session的操作 在使用StateServer或者SQLServer存储Session时 所有需要保存到Session的对象除了基本数据类型(默认的数据类型 如int string等)外 都必须序列化 只需将[Serializable]标签放到要序列化的类前就可以了
如
[Serializable]
public class MyClass
cha138/Article/program/net/201311/12478
相关参考
知识大全 ASP.Net中Session失效的一种编程思路[2]
ASP.Net中Session失效的一种编程思路[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
知识大全 ASP.NET Session丢失问题原因及解决方案
ASP.NETSession丢失问题原因及解决方案 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
ASP.NET2.0中CSS失效解决Q&A 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 经常有
知识大全 Asp.net中处理一个站点不同Web应用共享Session的问题
Asp.net中处理一个站点不同Web应用共享Session的问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一
ASP.Net的Session 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASPNet中的S
ASP.NET会话(Session)模式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Asp.net的Session过期 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 目录删除及重命
知识大全 ASP与ASP.NET转换Session数据桥的应用
ASP与ASP.NET转换Session数据桥的应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
ASP.NET中的session存储模式运用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在中
ASP.NETSession详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 阅读本文章前需要