<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="Asp.net 默认配置下，Session莫名丢失的原因及解决办法" id="card1">
<p> 游客</p><p>
标题:Asp.net 默认配置下，Session莫名丢失的原因及解决办法<br/>
正文:<br/>
正常操作情况下Session会无故丢失。因为程序是在不停的被操作，排除Session超时的可能。另外，Session超时时间被设定成60分钟，不会这么快就超时的。这次到CSDN上搜了一下帖子，发现好多人在讨论这个问题，然后我又google了一下，发现微软网站上也有类似的内容。现在我就把原因和解决办法写出来。原因：由于Asp.net程序是默认配置，所以Web.Config文件中关于Session的设定如下：&amp;lt;sessionState mode=’InProc’ stateConnectionString=’tcpip=127.0.0.1:42424’ sqlConnectionString=’data source=127.0.0.1;Trusted_Connection=yes’ cookieless=’true’ timeout=’60’/&amp;gt;我们会发现sessionState标签中有个属性mode，它可以有3种取值：InProc、StateServer?SQLServer（大小写敏感） 。默认情况下是InProc，也就是将Session保存在进程内（IIS5是aspnet_wp.exe，而IIS6是W3wp.exe），这个进程不稳定，在某些事件发生时，进程会重起，所以造成了存储在该进程内的Session丢失。哪些情况下该进程会重起呢？微软的一篇文章告诉了我们：1、配置文件中processModel标签的memoryLimit属性2、Global.asax或者Web.config文件被更改3、Bin文件夹中的Web程序（DLL）被修改4、杀毒软件扫描了一些.config文件。更多的信息请参考PRB: Session variables are lost intermittently in ASP.NET applications解决办法：前面说到的sessionState标签中mode属性可以有三个取值，除了InProc之外，还可以为StateServer、SQLServer。这两种存Session的方法都是进程外的，所以当aspnet_wp.exe重起的时候，不会影响到Session。现在请将mode设定为StateServer。StateServer是本机的一个服务，可以在系统服务里看到服务名为ASP.NET State Service的服务，默认情<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=335&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=335&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=335&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=335&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=335&amp;Page=3">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=335">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=335">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>