2016-08-13 107 views
2

应用程序在几秒钟内自动注销,我想将它增加到30分钟。如何增加Asp .Net MVC 5中的会话超时时间?

我已经在web.config文件中做了一些代码,但它不起作用。我已经研究了很多文章,但我无法解决它。

的Web.config代码:

<sessionState mode="InProc" timeout="1800"></sessionState> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Login" timeout="1800"> 
     </forms> 
    </authentication> 
+0

您显示的配置有效。如果您的会议似乎仍然超时,还有其他事情正在进行。解释你的托管环境是什么样的,展示使用会话的相关代码并解释你所经历的行为。 – CodeCaster

回答

0

此可以设置另一个地方是在你的Global.asax文件。如果sessionState在您的web.config文件中不起作用,我建议您在那里查看。显然Global.asax文件覆盖web.config文件。可以这样设置:

Session.Timeout = 30;//Timeout expects an integer representing minutes 
+0

我这样做,但给了我一个错误'会话状态不可用在这种情况下。' –

+0

我不建议这种方法,但我在Session_Start内测试它没有任何错误。 – QMaster

1

会话状态&认证超时是在几分钟内不被秒。所以,你应该有

<sessionState mode="inProc" timeout="30" ></sessionState> 
<authentication mode="Forms"> 
     <forms loginUrl="~/Login" timeout="30"> 
     </forms> 
</authentication> 

此外,你应该知道,这种方式是安装程序,认证会超时30分钟后它被授予,而会议将延长30分钟左右就可以从上次访问。为了使这两个更接近同步,您应该为forms元素添加slidingExpiration =“True”。

如果,这些变化之后,它仍然是您的退出几秒钟后,您可以查看:

  1. 是该cookie在网站上得到产生的?它的名字将是.ASPXAUTH,它应该是一个会话cookie。
  2. 您是否在超时发生时关闭浏览器?
  3. 您是否有多个应用程序使用相同的身份验证方法?
+0

sessionState的默认值为slidingExpiration =“True”,因此不需要隐式设置 – Dror

+0

slidingExpiration强制定时器在某些情况下重新开始过期。但改变暂停时间的原因还有很多。 –