Request.IsAuthenticated为TRUE,但Membership.GetUser()为NULL

时间:2014-03-31 18:50:31

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

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

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

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

1 个答案:

答案 0 :(得分:5)

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

这里的问题似乎是您的会员提供商。您提到您使用Web服务来检索成员资格信息。你说你已经把它作为问题的根源消除了,但是没有说你是如何消除它的。

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