2013-06-04 148 views
2

我开发了安装在“实时”IIS 7.5上的ASP.NET Web应用程序。 Web应用程序使用http会话为登录用户在页面之间传递参数。这在我的开发机器上很好(用VS2010 IDE中的本地IIS进行测试),但是当这个Web应用程序上传到客户端的IIS并开始使用它时(Google Chrome和IE浏览器),在一些随机时刻,会话变量似乎消失。我的第一个猜测是,加入这一行,以增加通过web.config文件中的会话超时设置:ASP.NET Web应用程序会话问题

<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

确保浏览器不会阻止客户端计算机上的Cookie。由于它是随机发生的,这不太可能,但它应该在检查清单上。 – RacerNerd

+0

你能告诉我们更多关于IIS配置的信息吗?它是一个单一的IIS服务器,它是一个网络花园或网络农场?您是使用InProc,State还是SQLServer会话状态提供程序? –

+0

@RacerNerd:我无法确定,因为它发生在客户机器上。但他们报告了Chrome和IE的相同问题。 – c00000fd

回答

1

默认情况下,会话使用cookie来跟踪用户会话。如果您不确定用户是否关闭它们,则可以配置无Cookie会话。

<configuration> 
    <system.web> 
     <sessionState cookieless="true" regenerateExpiredSessionId="true" /> 
    </system.web> 
</configuration> 
+1

谢谢。我认为你正在做某件事。我添加了你对我的web.config的建议,并且实际上开始在我的开发机器上看到相同的问题。那里有什么可能是错的? (我还更详细地更新了我原来的问题。) – c00000fd