我开发了一个安装在“实时”IIS 7.5上的ASP.NET Web应用程序。 Web应用程序使用http会话在登录用户的页面之间传递参数。这在我的开发机器上运行得很好(在VS2010 IDE中使用本地IIS测试),但是当这个Web应用程序上传到客户端的IIS并且他们开始使用它(谷歌浏览器和IE浏览器)时,在某些随机时刻会话变量似乎消失。我的第一个猜测是通过添加以下行来增加通过web.config文件的会话超时设置:
<configuration>
<system.web>
<sessionState timeout="20"></sessionState>
</system.web>
</configuration>
但这似乎没有解决问题。所以它让我想知道,会议有哪些其他设置?像内部文件夹那样保持所有会话的缓存在实际的IIS上溢出?有什么想法吗?
编辑:按照@wy __的建议,我修改了web.config文件并开始在我的开发机器上看到同样的问题。这是我现在拥有的整个system.web部分:
<system.web>
<compilation targetFramework="4.0" debug="false"/>
<pages validateRequest="false"/>
<httpRuntime requestValidationMode="2.0" executionTimeout="110" maxRequestLength="262144"/>
<sessionState timeout="20" cookieless="true" regenerateExpiredSessionId="true"></sessionState>
</system.web>
我也检查过,只有一个w3wp.exe
进程正在运行。
答案 0 :(得分:1)
默认情况下,会话使用Cookie来跟踪用户会话。如果您不确定用户是否关闭它们,则可以配置无cookie会话。
即
<configuration>
<system.web>
<sessionState cookieless="true" regenerateExpiredSessionId="true" />
</system.web>
</configuration>