System.Web.HttpContext.Current.User.Identity.Name not consis

本文关键字:Name not consis Identity User Web HttpContext Current System | 更新日期: 2023-09-27 18:04:35

在我们的项目中,我们使用System.Web.HttpContext.Current.User.Identity.Name来获取带有Domain的UserID。对于一些页面,比如login或home Page,它会返回Username和domainName,也就是

域名' UserID

当我们试图在其中一个页面上使用Usercontrol上传文件时,它会抛出异常,因为它直接返回Username

像Harry,Burlington而不是dom' hburlington。

我们在Web中使用Windows身份验证模式,抛出异常的配置和示例代码是

public static string GetCurrUsersLoginIdentity()
    {
        string name = "";
        if (System.Web.HttpContext.Current != null)
            name = System.Web.HttpContext.Current.User.Identity.Name;
        else
        {
            WindowsIdentity id = WindowsIdentity.GetCurrent();
            if (id != null)
                name = id.Name;
        }
        //If we still don't have a name then something is seriously wrong
        if (string.IsNullOrEmpty(name))
            throw new System.Security.Authentication.InvalidCredentialException("Coult not retrieve IDSID information for user.");
        return name;

System.Web.HttpContext.Current.User.Identity.Name not consis

User.IdentityWindowsIdentity.GetCurrent()是两个不同的东西:

用户。MSDN上的标识返回一个System.Security.Principal对象。

WindowsIdentity。MSDN上的GetCurrent返回一个System.Security.Principal.IPrincipal对象。

所以你看到两个不同的名字就不足为奇了。

顺便说一句,你的方法GetCurrUsersLoginIdentity的名字是误导,因为它返回用户的名字,而不是标识对象本身。

而且,您的异常消息包含拼写错误:Coult not retrieve IDSID information for user.