asp.net c中服务器端的会话超时#

时间:2012-04-02 05:31:27

标签: c# asp.net

我遇到会话超时问题,即使我在web.config中添加了如下代码,但它不起作用,它在10分钟内到期。

<sessionState mode="InProc" timeout="300"></sessionState>

服务器的会话超时为20分钟。

请帮我解决会话超时问题?

4 个答案:

答案 0 :(得分:1)

应用程序使用的IIS应用程序池上设置的空闲超时是多少?由于您正在使用InProc会话,如果池进程终止,则会话也将丢失。

答案 1 :(得分:1)

尽管您提到的服务器的会话超时时间为20分钟。由于以下原因,您可能会丢失会话状态数据:

  • IIS应用程序池重新启动或重置时。
  • ASP.NET Worker Process意外回收。
  • 覆盖您的bin或web.config。
  • 或者当您上传或删除应用程序中的任何文件时。

解决方案:使用StateServer会话状态模式:

<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="UseCookies" timeout="300" regenerateExpiredSessionId="true" />

访问此链接以配置StateServer:Configure a State Server to Maintain Session State

答案 2 :(得分:0)

也许Cookie在您的浏览器中关闭,或者设置为不是域,而是设置为某个文件夹或子域。使用以下方式测试此会话

<sessionState cookieless="true"  mode="InProc" timeout="300" > </sessionState>

如果它可以工作则问题在于您的浏览器1)cookie已关闭 OR 2)某些请求会使会话值为null。

<强>更新

如果这是chrome的问题,那么它会请求favicon.ico(在我的情况下)see here我的更新问题。

答案 3 :(得分:0)

检查您的应用程序池空闲超时,默认为20分钟(如果应用程序池空闲20分钟,它将回收并且所有进程内会话将被清除)增加其超时