在我们的项目中,我们使用System.Web.HttpContext.Current.User.Identity.Name来获取带域的UserID。对于少数页面,比如说,登录或主页或其中许多页面,它会返回带有domainName的用户名,这是
域名\用户ID
当我们想要在其中一个页面上使用Usercontrol上传文件时,它会抛出异常,因为它直接返回用户名
像哈利,伯灵顿而不是dom \ Hburlingt。我们在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;
答案 0 :(得分:0)
User.Identity
和WindowsIdentity.GetCurrent()
是两回事:
User.Identity on MSDN会返回System.Security.Principal
个对象。
WindowsIdentity.GetCurrent on MSDN会返回System.Security.Principal.IPrincipal
个对象。
所以你看到两个不同的名字就不足为奇了。
BTW,您的方法GetCurrUsersLoginIdentity
的名称具有误导性,因为它返回用户的名称而非身份对象本身。
此外,您的异常消息包含拼写错误:Coult not retrieve IDSID information for user.