在asp.net mvc中更改会话变量超时的默认值

时间:2013-07-19 08:48:08

标签: c# asp.net .net asp.net-mvc razor

我有一个带有razor视图引擎的Asp.net Mvc应用程序,其中我使用变量Session['user']:当用户登录应用程序Session['user'] = login时,在注销时此变量取值{ {1}}。

问题是存在短暂的超时且会话变量过期:如果我在自动登录应用程序Null后一分钟内什么都不做。

那么如何才能将会话变量的超时设置为无限制,直到它被程序更改?有什么建议吗?

5 个答案:

答案 0 :(得分:28)

  

那么如何才能将会话变量的超时设置为无限制,直到它被程序更改?有什么建议吗?

您无法将timeout值设置为无限制。

您可以使用 web.config timeout元素的sessionState属性,以分钟为单位增加超时值。


会话状态设置

默认情况下,ASP.NET使用cookie来标识哪些请求属于特定会话。   如果cookie不可用,则可以通过向URL添加会话标识符来跟踪会话。   要禁用Cookie,请设置sessionState cookieless="true". (120 =分钟)

<sessionState mode="StateServer" cookieless="false" timeout="120"/>

查看此Session-Time out

答案 1 :(得分:13)

您无法将其指定为无限制。您可以使用web.config

中的会话状态元素的超时属性以分钟为单位增加值
<sessionState timeout="30">
</sessionState>

默认情况下,会话超时值为20分钟。在您的情况下,如果您使用表单身份验证,也请检查身份验证超时值

<authentication mode="Forms">
   <forms loginUrl="logon.aspx" 
   protection="All" path="/" timeout="30" />
</authentication>  

答案 2 :(得分:8)

会话超时,而不是变量。在几分钟内将其设置为配置

<sessionState timeout="30" />

答案 3 :(得分:7)

无法将会话时间设置为:无限制。而是将会话时间设置为高值示例:

<configuration>
   <system.web>
    <sessionState mode="InProc" timeout="350" />
    </system.web>
</configuration>

答案 4 :(得分:0)

我之前有一个类似的问题,它与会话超时值无关。因此,有时现在大约是超时时间。会话超时时间可能设置为20分钟或更长时间,但是如果托管服务器或您的计算机在 MEMORY 非常低。然后清除会话值,有时用户将不得不再次登录。

此内存不足有时是由数据库中的存储图像二进制值引起的,而不是作为文件存储在服务器上并使用System.IO.File过程进行访问。因此,当您尝试获取某些记录时,还将提取其在TABLE上的IMAGES DATA,从而导致性能显着降低以及可用内存的过度使用。

可能是您的计算机或主机上的内存不足(不是存储空间)

希望这会有所帮助。