弄清楚为什么asp.net身份验证票证即将到期

时间:2009-05-12 07:23:43

标签: asp.net asp.net-mvc authentication cookies asp.net-membership

我需要帮助找出我的托管网站上大约一个小时后我的身份验证票证到期的原因。但是,如果我在本地运行该站点,则身份验证票证会在正确的时间内保持活动状态。

这是我的localhost web.config:

<authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="20160" slidingExpiration="true" path="/" />
</authentication>

这是我托管的web.config:

<authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="20160" slidingExpiration="true" domain=".mywebsite.com" path="/" />
</authentication>

我知道正在创建身份验证票证,因为:

  • 我可以在浏览器中看到它
  • 即使关闭浏览器并重新打开
  • ,我仍然保持登录状态
  • 即使在网站回收后(我更改并保存web.config以便回收它),我仍然保持登录状态。

当我在浏览器中检查cookie过期日期时,它是2周后。但是,大约一个小时后,我的身份验证总是会过期。

如何确定托管网站的身份验证过早到期的原因,我该怎么办? 我不知道如何解决这个问题,因为这是我唯一一个遇到问题的托管网站。

更新1:等待1小时后,我检查浏览器,看到cookie仍然存在。事实上,它的失效日期设定为2周后。但是,如果我重新加载页面或尝试访问需要身份验证的任何页面,我将被带到登录页面。

3 个答案:

答案 0 :(得分:6)

我在system.net中添加了一个machinekey条目。像这样:

    <machineKey validationKey="aaa"
    decryptionKey="bbb" validation="SHA1" />

现在它让用户保持登录状态。但是,现在看来我遇到了性能问题。现在用于加载大约500毫秒的页面大约需要两倍的时间。

答案 1 :(得分:0)

我会在排除故障时尝试以下几点:

  • IIS版本&amp; localhost&amp;之间的设置托管。很可能在应用程序池设置方面存在一些差异
  • 在IIS 7中,有一个特殊设置:read here

答案 2 :(得分:0)

您是否曾向托管服务提供商询问machine.config是否将此设置为不同的值? machine.config上的设置将覆盖web.config。