找出 ASP.NET 身份验证票证过期的原因

发布于 2024-07-18 20:43:29 字数 921 浏览 5 评论 0 原文

我需要帮助弄清楚为什么我的身份验证票证在我的托管网站上大约一个小时后就过期了。 但是,如果我在本地运行该站点,身份验证票证将在正确的时间内保持活动状态。

这是我的本地主机 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>

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

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

当我在浏览器中检查 cookie 过期日期时,已经是 2 周后了。 然而,大约一个小时后,我的身份验证总是过期。

我该如何找出托管网站的身份验证如此早过期的原因? 我不知道如何解决这个问题,因为我的托管网站是唯一有问题的网站。

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

I need help figuring out why my authentication ticket is expiring after about an hour on my hosted website. But if I run the site locally the authentication ticket stays alive for the correct amount of time.

This is my localhost web.config:

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

and this is my hosted web.config:

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

I know the authentication ticket is being created because:

  • I can see it in the browser cookies
  • I stay logged in even after closing the browser and reopening
  • I stay logged in even after website recycles (changing and saving web.config to recycle it)

When I check the cookie expiration date in the browser it's 2 weeks later. However, after about an hour my authentication always expires.

What can I do to figure out why the hosted website's authentication is expiring so early?
I don't know how to go about resolving this problem since it's my hosted website that is the only one having problems.

Update 1: After waiting 1 hour, I check my browser and I see the cookie still exists. In fact it's expiration date is set for 2 weeks later. But if I reload the page or try going to any pages that requires authentication I am taken to the login page.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

生生不灭 2024-07-25 20:43:29

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

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

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

I added a machinekey entry in system.net. Something like this:

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

and now it keeps the user logged in. However, now it seems like I am having performance issues. The page used to take roughly 500ms to load now takes about double that time.

不寐倦长更 2024-07-25 20:43:29

我会尝试几种方法来解决此问题:

  • IIS 版本和版本 本地主机和本地主机之间的设置 托管。 应用程序池设置很可能存在一些差异
  • 在 IIS 7 中,有一个特殊的设置:阅读此处

I would try several things in troubleshooting this:

  • IIS version & settings between your localhost & hosting. Most likely there are some differences in application pool setting
  • In IIS 7, there is a special setting for this: read here
眼眸里的快感 2024-07-25 20:43:29

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

Have you asked your hosting provider if the machine.config has this set to a diferent value? Settings on machine.config will override the web.config.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文