【问题标题】:Forms Authentication timing out when it shouldn't?表单身份验证不应该超时?
【发布时间】:2008-11-21 14:12:15
【问题描述】:

我遇到了一个 ASP.NET 应用程序问题,让我发疯。

当用户在一段时间内使页面处于非活动状态时,会话超时并且由于会话变量无法解析而引发错误(无论如何我都会错误捕获此问题,但这不是问题)。 我编写了一个“除颤器”,它将在会话超时的一半到期后执行不可见的回发,这似乎工作正常——即使会话超时设置为 20 分钟,让应用程序停留 30 分钟也不会导致错误。 但是,今天早上,其他开发人员之一遇到了超时 - 这怎么可能?

在进一步调查中,我认为当超过表单身份验证超时时会出现问题 - 即使 deribulator 已经(显然)保持会话处于活动状态。我已经读过,只有在指定超时期限的一半之后发生回发时才会重新发出身份验证票,这不是问题,因为 debri 将在超时期限的后半段发出请求 - 那么为什么是没有重发?

我想我可以通过将身份验证超时设置为 8 小时左右来解决这个问题,但这是一个糟糕的解决方法。

任何人都可以对此有所了解吗?

提前致谢

[编辑 24/11/2008] 查看日志文件已被证明是有启发性和令人困惑的。我可以看到除颤器在 10 分钟不活动后触发,但是虽然 Session_Id 似乎始终保持一致,但表单身份验证票证 ID 会发生变化 - 不确定它是否应该如此。我现在正在制定一个测试计划,并会在我完成后回复。 感谢迄今为止提供反馈的所有人。

[24/11/2008 编辑] 好吧,我被难住了 - 目前一切似乎都运行良好!当 derib 运行(ID 更改)并且正在维护会话时,正在重新生成身份验证票证。是服务器问题吗 - 无法判断。我以前遇到过这个问题,但从未深入了解它,这非常令人沮丧——当然它不应该这么困难。我将不得不暂时放弃这一点,因为我必须继续处理应用程序的其他一些方面。我只需要围绕这个问题编写代码 - 这可能永远不会在客户网站上发生。

再次感谢大家的意见 - 如果我有任何进展,我会在这里发布。

【问题讨论】:

  • 我也见过这个问题。让我们希望有人有一个很好的解释
  • 您是否手动生成验证票
  • 我正在重用我们内部库中的代码,所以我必须在星期一检查。我会告诉你(感谢你的意见)

标签: asp.net session forms-authentication


【解决方案1】:

这也可能在 iis 回收或终止应用程序池时发生。

你可能想检查Troubleshoot Forms Authentication这可能是客户端丢失了他们的cookie。

如果您手动生成身份验证票证,则需要在代码中设置超时,而不是在 web.config 中设置

【讨论】:

  • 是否有办法处理此问题,以免丢失身份验证/会话?
  • 你的建议让我看到这篇文章,这可能对我有帮助(我会在星期一看看)msdn.microsoft.com/en-us/library/ms972429.aspx
  • 我的团队遇到了会话超时问题,Dave 的链接非常有帮助,感谢 DilbertDave!
  • 当我手动生成身份验证票时,它使用 web.config 设置来设置到期日期
【解决方案2】:

不是说显而易见的,而是:

  1. Session 和 FormsAuthentication 超时是否设置为相同的值?
  2. slidingExpiration 是否设置为 true

【讨论】:

    【解决方案3】:

    您是否检查了导致问题的应用程序池或工作进程回收?

    【讨论】:

    • 还没有 - 这是我昨天下班后建议的,所以我会在星期一看看。这是否会导致表单身份验证下降 - 我虽然这是基于 cookie 的。
    • 这可能是问题所在(现在似乎已经消失了!)但我不能确定。事件日志中没有任何内容:-(
    • 即使它是基于 cookie 的,如果机器正在更改用于加密 cookie 的密钥,如何正确解密 cookie?当然这有点假设,但这是我在使用表单身份验证时看到的。
    【解决方案4】:

    感谢大家的回复: 我已经在 web.config 中明确地将slidingExpiration 设置为true,但没有任何效果。

    超时值为: 会议:20分钟 FormsAuthentication:60 分钟

    我已将会话超时保留原样,并将 FormsAuthentication 减少到 12 分钟以进行测试。 derib 'ping' 每 10 分钟一次。如果我让页面处于非活动状态 14 分钟,然后单击一个按钮,我会遇到问题 #edit: 但并非每次都如此!#.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 2010-12-01
      • 1970-01-01
      • 2013-10-22
      相关资源
      最近更新 更多