我希望 IIS 获取查看页面的人的 Active Directory 用户名。这可能吗?我以为我可以通过 ASP.NET 身份验证来做到这一点,但是当我尝试它时,我得到了“401 Unauthorized: Access is denied due to invalid credentials”错误消息。基本上,我想做的是让网页获取当前用户名,进行比较以查看此人是否是特定安全组的成员,如果是,则显示一些内容。使用 VS2010 内置测试服务器在我的本地 PC 上运行良好,但它只是在提取我的 AD 详细信息。现在我已经全部工作了,我想将它移动到运行 IIS7 的测试服务器上,让它在那里工作。
我在我的 default.aspx 代码背后的唯一代码(在我的本地机器上工作)如下:
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;