我在 .NET 网络应用程序中发现了一个奇怪的行为。它很少发生,但如果我坐在一个页面上并继续按 F5,最终我将让 Membership.GetUser() 返回 NULL,即使 Request.IsAuthenticated 返回 true。
if (Request.IsAuthenticated)
{
MembershipUser user = Membership.GetUser(); //user is occasionally null.
}
我的理解是这不应该发生,问题的间歇性使我认为这是一个错误,但除了将 GetUser() 调用放在 WHILE 循环中(这消除了 GetUser() 工作时的问题在第二次尝试时),我不确定还有什么地方可以寻找造成这种情况的原因。我们在另一台服务器上使用 Web 服务作为我们的成员(member)提供者,但我已将其作为超时问题消除,它会返回不同的错误。
最佳答案
成员资格和身份验证彼此无关(好吧,几乎没有)。 Request.IsAuthenticated 仅表示浏览器计算机上存在有效的 FormsAuthentication cookie。除了提供正确的 IIdentity.Name 值外,它与获取成员资格信息无关。
这里的问题似乎出在您的成员(member)资格提供商中。您提到您使用网络服务来检索成员(member)信息。你说你已经消除了它作为问题的根源,但没有说你是如何消除它的。
我会说它很可能与此网络服务有关。
关于c# - Request.IsAuthenticated 为 TRUE 但 Membership.GetUser() 为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22769770/