1

我正在开发一个网页,需要知道用户的 Windows 身份验证值,更准确地说是名称。

其他开发已经通过这种身份验证完成,但对我来说遗憾的是,他们的创建者早已不在,我没有联系或文档。

我正在使用 Visual Studio 2008,并且正在访问远程服务器中的 Web 服务。该服务器是 windows server 2008 r2 标准,使用 ISS 版本 7.5。

因为我有其他开发的源代码,所以我所做的就是复制粘贴,并且在我调用我的机器(本地主机)中的 web 服务时工作正常。代码如下:

//1st way
WindowsPrincipal wp = new WindowsPrincipal(WindowsIdentity.GetCurrent());
string strUser = wp.Identity.Name;//ALWAYS GET NT AUTHORITY\NETWORK SERVICE
//2nd way
WindowsIdentity winId = WindowsIdentity.GetCurrent();
WindowsPrincipal winPrincipal = new WindowsPrincipal(winId);
string user = winPrincipal.Identity.Name;//ALWAYS GET NT AUTHORITY\NETWORK SERVICE
//3rd way
IIdentity WinId = HttpContext.Current.User.Identity;
WindowsIdentity wi = (WindowsIdentity)WinId;
string userstr = wi.Name; //ALWAYS GET string empty 

btn_select.Text = userstr;
btn_cancelar.Text = strUser;
btn_gravar.Text = user;

如您所见,我在这里有 3 种方法可以得到相同的结果,并且以可悲的方式显示我的用户名。至于我的 web.config 我有:

<authentication mode="Windows"/>
<identity impersonate="true" />

在 IIS 管理器中,我尝试了很多在匿名身份验证、ASP.NET 模拟、基本身份验证、表单身份验证和 Windows 身份验证之间启用和禁用的组合。

可以请人帮助我吗?

注意:我从每次尝试中获得的相应值都在代码中

4

0 回答 0