【问题标题】:Request.IsAuthenticated is TRUE but Membership.GetUser() is NULLRequest.IsAuthenticated 为 TRUE 但 Membership.GetUser() 为 NULL
【发布时间】:2014-03-31 18:50:31
【问题描述】:

我在我们的 .NET Web 应用程序中看到了一个奇怪的行为。它很少发生,但是如果我坐在页面上并继续按 F5,即使 Request.IsAuthenticated 返回 true,最终我也会让 Membership.GetUser() 返回 NULL。

if (Request.IsAuthenticated)
{
    MembershipUser user = Membership.GetUser(); //user is occasionally null.
}

我的理解是这不应该发生,问题的间歇性让我认为这是一个错误,但除了将 GetUser() 调用放在 WHILE 循环中(这消除了 GetUser() 工作时的问题在第二次尝试时),我不确定在哪里可以找到导致这种情况的原因。我们在另一台服务器上使用 Web 服务作为我们的会员提供者,但我已将其作为超时问题消除,这会返回不同的错误。

【问题讨论】:

    标签: c# asp.net asp.net-membership membership-provider


    【解决方案1】:

    成员身份和身份验证彼此无关(嗯,几乎没有关系)。 Request.IsAuthenticated 仅仅意味着浏览器计算机上有一个有效的 FormsAuthentication cookie。除了提供正确的 IIdentity.Name 值之外,它与获取 Membership 信息无关。

    这里的问题很可能出在您的会员资格提供商上。您提到您使用网络服务来检索会员信息。你说你已经消除了它作为问题的根源,但不要说你是如何消除它的。

    我会说它很可能与这个网络服务有关。

    【讨论】:

    • 我还没有消除网络服务的问题,它可能每 50 次左右返回“null”,但我确实消除了网络服务的连接问题。如果 IsAuthenticated 和 Membership 无关,那么我认为这回答了我的问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2021-10-30
    相关资源
    最近更新 更多