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;
User.Identity
和WindowsIdentity.GetCurrent()
是两个不同的东西:
用户。MSDN上的标识返回一个System.Security.Principal
对象。
WindowsIdentity。MSDN上的GetCurrent返回一个System.Security.Principal.IPrincipal
对象。
所以你看到两个不同的名字就不足为奇了。
顺便说一句,你的方法GetCurrUsersLoginIdentity
的名字是误导,因为它返回用户的名字,而不是标识对象本身。
而且,您的异常消息包含拼写错误:Coult not retrieve IDSID information for user.