0

我希望 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;
4

3 回答 3

2

在 IIS 中,尝试启用 Windows 身份验证,然后禁用所有其他形式的身份验证(包括匿名)。

于 2012-10-26T03:20:14.907 回答
0

如果打开模拟, Environment.UserName将设置为您想要的。

于 2012-10-26T01:40:43.813 回答
0

您可以使用

HttpContext.Current.User.Identity.Name

It will give you Domain\UserName
于 2012-10-26T03:14:48.727 回答