【问题标题】: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 中: 但这根本没有帮助......

标签: asp.net asp.net-mvc-2 authentication timeout


【解决方案1】:

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 分钟后过期。可能是什么问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-12
  • 2012-07-07
  • 1970-01-01
  • 2012-09-01
  • 2018-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多