为啥 ASP.NET MVC 中的超时时间很短?
Posted
技术标签:
【中文标题】为啥 ASP.NET MVC 中的超时时间很短?【英文标题】:Why really short timeout in ASP.NET MVC?为什么 ASP.NET MVC 中的超时时间很短? 【发布时间】:2011-04-29 01:24:14 【问题描述】:我有一个 MVC 2 应用程序,其中超时设置为 2880(我理解为分钟,但即使是几秒钟也有问题):
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
现在这应该意味着 48 小时,或至少 48 分钟(如果值是秒)。但是用户在不活动几分钟后就会退出...
这是为什么呢?任何帮助表示赞赏!
【问题讨论】:
你用不同的浏览器试过了吗?我曾经在一个孤立的用户使用 Firefox 浏览时看到过这个问题。 是的,问题出现在 Firefox、Chrome、IE 和 Safari... 这个blog post 谈到了类似的情况;也许该设置在代码中的某处被覆盖。 嗯,我检查了FormsAuthenticationTicket代码,有一个sn-p,但它完全在不同的Controller中,所以它应该与它没有任何关系...... 更多信息:当我在开发过程中在本地主机上尝试时不会发生注销,仅在虚拟主机上。我已经尝试联系支持人员,但他们似乎不知道问题出在哪里。他们建议将此添加到我的 web.config 中:2880 以分钟为单位。如果您添加slidingExpiration="true"
,它将自动注销。请参阅下面的示例。
<forms loginUrl="~/Account/LogOn" timeout="2880" slidingExpiration="true"/>
【讨论】:
这是不对的。它不会自动注销。当 SlidingExpiration 设置为 true 时,身份验证 cookie 有效的时间间隔将重置为过期 Timeout 属性值。【参考方案2】:经过大量的谷歌搜索终于找到了答案......
您必须在 web.config 文件中设置自定义机器密钥。我使用了这个生成器:
http://aspnetresources.com/tools/machineKey
这似乎与网络主机上的“回收”有关,如果我理解正确的话,这会导致用户被注销。
不管怎样,它现在可以正常工作了!
【讨论】:
哇,这是非常有用的信息。非常感谢!我遇到了同样的问题,它解决了。 为什么会这样? 链接不再活跃,你能在这里解释一下吗?其实我面临同样的问题。我为表单身份验证提供了超时时间为 timeout="2880" slipExpiration="true" 和 sessionState 超时时间为 1440。但会话仍然在 10-15 分钟后过期。可能是什么问题。以上是关于为啥 ASP.NET MVC 中的超时时间很短?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 ASP.NET MVC 站点中的此 AJAX 请求会触发预检检查?
为啥在 asp.net mvc 中的公共路由之前先映射特殊路由?
为啥 ASP.NET MVC 中的本地 URL 的 Url.IsLocalUrl 为 false?