我有一个带有razor视图引擎的Asp.net Mvc应用程序,其中我使用变量Session['user']
:当用户登录应用程序Session['user'] = login
时,在注销时此变量取值{ {1}}。
问题是存在短暂的超时且会话变量过期:如果我在自动登录应用程序Null
后一分钟内什么都不做。
那么如何才能将会话变量的超时设置为无限制,直到它被程序更改?有什么建议吗?
答案 0 :(得分:28)
那么如何才能将会话变量的超时设置为无限制,直到它被程序更改?有什么建议吗?
您无法将timeout
值设置为无限制。
您可以使用 web.config 中timeout
元素的sessionState
属性,以分钟为单位增加超时值。
会话状态设置
默认情况下,ASP.NET使用cookie来标识哪些请求属于特定会话。
如果cookie不可用,则可以通过向URL添加会话标识符来跟踪会话。
要禁用Cookie,请设置sessionState cookieless="true".
(120 =分钟)
<sessionState mode="StateServer" cookieless="false" timeout="120"/>
答案 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,从而导致性能显着降低以及可用内存的过度使用。
可能是您的计算机或主机上的内存不足(不是存储空间)
希望这会有所帮助。