c# - Request.IsAuthenticated 为 TRUE 但 Membership.GetUser() 为 NULL

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

我在 .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/

相关文章:

javascript - C# asp.net mvc 设置 CheckBoxFor 带有模型值的选中属性

c# - 如何将 EntityCollection<T> 转换为 List<T>

c# - 简单的从 gridview 在 asp.net web 应用程序中选择一行

c# - 只获取 src 值

asp.net - 非RBAC用户角色和权限系统: a role with properties

c# - Membership.ValidateUser 方法如何访问数据库?

c# - 在这种假设情况下,是否有可能在 C# < 4 中围绕泛型协方差进行最终运行?

c# - ASP.Net:写文件 block ..HTTP文件上传简历

asp.net - 无法评估表达式

asp.net - 创建新用户时 ASP .NET 成员资格自定义错误消息?