Asp.net会话在几秒钟后自动到期

时间:2013-01-23 09:27:47

标签: asp.net session session-state session-timeout

当用户登录时,我将user_id存储在Session变量中,而第二页上我检查页面加载,如果user_id存在则罚款,否则重定向登录页面,但是当我登录并在几秒钟后重定向到下一页时刷新页面我的会话在那里是空的,我被重定向到登录页面它在整个应用程序中发生我已经尝试了所有解决方案,但都是徒劳的

另一件事是应用程序在开发服务器上以及在局域网中的本地IIS上工作正常但在实时服务器上正在发生此问题。

请建议解决方案,我也在web.config中的Proc中以分钟和模式定义会话超时。

提前致谢

5 个答案:

答案 0 :(得分:0)

您可以在web.config中添加<httpRuntime delayNotificationTimeout=""/>see more

OR

试试这个

<authentication mode="Forms">
  <forms loginUrl="/loginurl" timeout="2880" />
</authentication>

答案 1 :(得分:0)

在web.config

中试试
<configuration>
 <system.web>
   <sessionState mode="InProc" timeout="90"></sessionState>
 </system.web>
</configuration>

答案 2 :(得分:0)

我刚刚遇到的一个会话问题,可能会有所帮助,来自某些公司的用户会很快结束他们的会话,但其他用户没有问题。经过大量测试后,我发现从办公室连接到网站的用户遇到了问题,但是从家里连接的用户没有问题。

他们的公司设置为使用单个IP(或一组IP)来处理所有绑定的Web请求。那么,该公司有多个IP用于外部访问,并且IP随每个请求而改变(或可能改变)。这将重置我网站上的会话并将其注销。

我仍然在实施修复或检查,因此我不能给你一个傻瓜证明修复,但它是值得研究的。这可以解释发生在你身上的事情。

答案 3 :(得分:0)

您是否有机会使用服务器群集?网络负载平衡可能每次都将客户端重新路由到不同的服务器。如果是这样,则必须重新配置NLB以将客户端保留在单个服务器上或设置会话共享。

同时检查应用程序池是否有一些淫秽规则来过于自行回收。

答案 4 :(得分:0)

如果您使用的是InProc会话状态模式,并且应用程序池中有多个工作进程,则会话可能会在几秒钟后自动过期,因为如果不同工作进程对同一会话的不同请求会导致数据丢失。

在我的情况下,我使用的是 InProc会话状态模式,其中“最大工作进程”设置为4 ,因此会话即将到期

设置最大工作进程= 1即可解决