【问题标题】:Changing the default value of session's variable timeout in asp.net mvc在 asp.net mvc 中更改会话变量超时的默认值
【发布时间】:2013-07-18 11:37:40
【问题描述】:
我有一个带有 razor 视图引擎的 Asp.net Mvc 应用程序,其中我使用了一个变量 Session['user']:当用户登录应用程序 Session['user'] = login 并在注销时此变量作为值 Null。
问题是有一个短暂的超时并且会话变量过期:如果我在自动登录应用程序Session['user'] =null 后一分钟内什么都不做。
那么如何设置会话变量的超时时间,直到它被程序更改?有什么建议吗?
【问题讨论】:
标签:
c#
asp.net
.net
asp.net-mvc
razor
【解决方案1】:
那么如何设置会话变量的超时时间,直到它被程序更改?有什么建议吗?
您不能将timeout 值设置为无限制。
您可以使用 web.config 中 sessionState 元素的 timeout 属性增加超时值(以分钟为单位)。
会话状态设置
默认情况下,ASP.NET 使用 cookie 来识别哪些请求属于特定会话。
如果 cookie 不可用,可以通过将会话标识符添加到 URL 来跟踪会话。
要禁用 cookie,请设置 sessionState cookieless="true".
(120 = 分钟)
<sessionState mode="StateServer" cookieless="false" timeout="120"/>
看看这个Session-Time out
【解决方案2】:
您不能将其分配给无限。您可以使用web.config中的会话状态元素的超时属性以分钟为单位增加值
<sessionState timeout="30">
</sessionState>
默认会话超时值为 20 分钟。同样在您的情况下,如果您使用表单身份验证,请检查身份验证超时值
<authentication mode="Forms">
<forms loginUrl="logon.aspx"
protection="All" path="/" timeout="30" />
</authentication>
【解决方案3】:
这是会话的超时,而不是变量。在几分钟内将其设置在配置中
<sessionState timeout="30" />
【解决方案4】:
无法将会话超时设置为无限制。
而是将会话超时设置为较高的值。
示例:
<configuration>
<system.web>
<sessionState mode="InProc" timeout="350" />
</system.web>
</configuration>
【解决方案5】:
我之前也遇到过类似的问题,这与会话超时值无关。因此,有时它现在是关于超时时间的。此会话超时可以设置为 20 分钟或更长时间,但如果托管服务器或您的计算机在 MEMORY 上非常低。然后清除会话值,用户有时必须再次登录。
这种低内存有时是由 STORING IMAGES 或 BINARY VALUES 在数据库中而不是作为文件存储在服务器上并使用 System.IO.File 过程访问它们引起的.因此,当您尝试获取一些记录时,它们在 TABLE 上的 IMAGES DATA 也将被获取,从而导致性能显着降低以及可用内存的过度消耗。
可能是您的计算机或主机内存不足(不是存储空间)
希望这会有所帮助。