为什么我从Membership.GetCurrentUserName得到一个NullReferenceException?

 2023-02-16    385  

问题描述

我刚刚切换到使用MSBuild预先编译我的网站,现在我得到了这个奇怪的错误:

我有呼叫成员致电:

为什么我从Membership.GetCurrentUserName得到一个NullReferenceException?

[NullReferenceException: Object reference not set to an instance of an object.]
System.Web.Security.Membership.GetCurrentUserName() +36
System.Web.Security.Membership.GetUser() +7
...

推荐答案

反射器显示成员的实现.GetCurrentUserName是:

private static string GetCurrentUserName()
{
    if (HostingEnvironment.IsHosted)
    {
        HttpContext current = HttpContext.Current;
        if (current != null)
        {
            return current.User.Identity.Name;
        }
    }
    IPrincipal currentPrincipal = Thread.CurrentPrincipal;
    if ((currentPrincipal != null) && (currentPrincipal.Identity != null))
    {
        return currentPrincipal.Identity.Name;
    }
    return string.Empty;
}

乍一看,最可能的解释是:

  • httpcontext.current不是null,

  • httpcontext.current.user为null或具有null identity属性.

所有其他路径似乎都有一个测试对null.

所以我建议你跟踪httpcontext.user的类型和内容.

httpcontext.current.user是我知道的iPrincipal的Iprincipal,最具体的实现,我知道不允许一个空标识,所以我会打赌httpcontext.user为null.

以上所述是小编给大家介绍的为什么我从Membership.GetCurrentUserName得到一个NullReferenceException?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/34006.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。