日期:2014-05-18  浏览次数:20432 次

session丢失是如何解决的
我就知道SESSION容易丢掉,也听说是放到数据库,但是我还是不了解具体怎么解决方案的,谁给个例子

------解决方案--------------------
Session丢失的原因就很多,超时是其中的一种

当工作模式为InPro时,Session映射到AppDomain的内存里,负责对页面请示提供服务。所以会受到进程回收到AppDomain重启的影响。同时,对web.config或者global.asax的修改,也会导致Session的丢失

针对InPro模式会话丢失,可以采用两种进程外状态提供者来解决:StateServer, SqlServer。
这个偶没试过。
------解决方案--------------------
换用hiddenfield
------解决方案--------------------
用StateServer或者SqlServer.
我用StateServer, 在web.config里,改 <sessionState mode= "StateServer " > ,还有就是确定ASP.NET State Service已经在运行
------解决方案--------------------
LZ正解,把模式设置为stateserver.
------------------------------
默认情况下是Inpro是存储在进程里的,当服务器重启时,将会丢失,但效率最高
而存储在SQL server里则是最安全的,因为不存在什么进程问题,不是存储在内存里的,而是存储在数据库里,当然就不会丢失了,但是这种方法效率稍微低了些.
------解决方案--------------------
IIS管理器
属性-> asp.net -> 编辑配置 打开配置窗口 -> 状态管理Tab
这里可以配置,配置完会自动修改对应的web.config. 当然也可以直接在web.config中进行配置.

<system.web>
<sessionState mode= "InProc " stateConnectionString= "tcpip=127.0.0.1:42424 " sqlConnectionString= "Data Source=localhost;User ID=sa;Password=123456 " cookieless= "false " timeout= "30 "/>
</system.web>