我希望IIS获取查看该页面的人的Active Directory用户名。这可能吗?我以为我可以通过ASP.NET身份验证来做到这一点,但是当我尝试它时,我得到了一个'401 Unauthorized:由于凭据无效而拒绝访问'错误消息。基本上,我想要做的是让网页获取当前用户名,进行比较以查看此人是否是特定安全组的成员,如果是,则显示一些内容。使用VS2010内置测试服务器在我的本地PC上运行良好,但它只是拉动我的AD细节。现在我已经完成了所有工作,我想将它移动到运行IIS7的测试服务器上,以使其在那里工作。
我在default.aspx Code Behind(在本地计算机上工作)中唯一的代码如下:
string[] arr = System.Web.HttpContext.Current.Request.LogonUserIdentity.Name.Split('\\');
if (arr.Length > 0)
{
lblDomain.Text = arr[0].ToString();
lblUser.Text = arr[1].ToString();
}
从我在这里找到的(http://stackoverflow.com/questions/10584545/activedirectory-current-username-in-asp-net)它看起来像我想要的可能,但我想知道它是否是某种东西做我的代码背后。我也不确定我的Web.Config是否需要特殊功能。我确实在那里有以下内容,但我收到了500错误。
<authentication mode="Windows"/>
<identity impersonate="true"/>
我已经尝试了上述Stack Overflow问题的答案,但仍然有500个错误。任何提示都将不胜感激。
还尝试了以下但仍然有500个错误。不知道哪里出错了。
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
和
string userName = Environment.UserName;
答案 0 :(得分:2)
在IIS中,尝试启用Windows身份验证,然后禁用所有其他形式的身份验证(包括匿名)。
答案 1 :(得分:0)
Environment.UserName将设置为您想要的内容。
答案 2 :(得分:0)
您可以使用
HttpContext.Current.User.Identity.Name
It will give you Domain\UserName