我的ASP.Net MVC应用程序出了问题。 我在web.config中有以下内容:
public void Session_OnStart()
{
Session.Timeout = 525600;
}
这是我的Global.asax
<thead>
有时候它工作正常,但有时候会话在3到5分钟后耗尽。我错过了什么我能做些什么来让会话持续更长时间。 谢谢
更新
有些人怀疑问题是回收时间,但在我的生产服务器上,我没有必要的权利来更改回收时间来测试。 最后,我通过在数据库中手动保存会话数据来修复它,然后当Web会话到期时从数据库获取所需的数据并将它们放回到Web会话中。
感谢您的帮助。
答案 0 :(得分:0)
因为您将模式设置为'inproc'并且正如您所提到的,它有时会起作用,有时也不起作用,因此您的应用程序可能会被回收,从而导致会话重新启动
首先确保没有其他代码更改会话超时
确保应用程序不被回收。
答案 1 :(得分:0)
会话有许多其他方式可以“过期”,例如:
网络农场中的InProc
如果您在Web场中并且您的计算机密钥尚未设置为在web.configs中匹配,那么您的注销可能是由于请求转到另一台服务器(auth cookie不会解密)因而未被认证。)
InProc在webfarm情况下效果不佳。您需要选择另一种方法(SQL Server会话状态是另一种内置选项),它将会话存储带到不同的位置。还有其他第三方选项可用于在中央计算机上存储会话状态。
答案 2 :(得分:0)
旧问题,但我忘了正式回答。 我们切换到了新服务器,再也没有问题了,所以我再也没有确切地找出问题的根源。 在切换到新服务器以解决问题之前,我进行了故障保护,将会话存储在数据库以及InProc中。 这样,如果首先没有在内存中找到会话,我将检查数据库并从那里获取数据(如果存在)。 谢谢大家的帮助。