如何在c#和asp.net中获取客户端主机名、本地计算机名和用户名

如何在c#和asp.net中获取客户端主机名、本地计算机名和用户名,c#,asp.net,C#,Asp.net,我有IP地址,但由于某些原因,我可以正确解析名称以显示本地计算机名。我尝试了几件事,但都显示了服务器主机名 ipadd = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; IPAddress myIP = IPAddress.Parse(ipadd); IPHostEntry GetIPHost = Dns.GetHostEntry(myIP); //userhostname = Syst

我有IP地址,但由于某些原因,我可以正确解析名称以显示本地计算机名。我尝试了几件事,但都显示了服务器主机名

    ipadd = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
    IPAddress myIP = IPAddress.Parse(ipadd);
    IPHostEntry GetIPHost = Dns.GetHostEntry(myIP);


    //userhostname = System.Environment.MachineName;
    //userhostname = Dns.GetHostName(); //Resolve ServerHostName not computer
    //userhostname = HttpContext.Current.Request.UserHostName;
    //userhostname = HttpContext.Current.Request.UserAgent;
    userhostname = GetIPHost.HostName;
对于用户名,我尝试使用

nametext = WindowsIdentity.GetCurrent().Name;
//Shows server name when deployed on server 
//when debuging and running localy shows correctly current user logged in

//nametext = HttpContext.Current.Request.ServerVariables["LOGON_USER"]; 
// not returning anything
我切换了身份验证,但没有结果

<authentication mode="Forms">
<authentication mode="Windows">

使用和作为客户端IP和计算机名

假设已正确配置身份验证,则可以从中获取客户端用户


在的上下文中,您可以使用
Request.UserHostAddress
Request.UserHostName
User.Identity.Name
,我使用它在我的intranet上显示客户端区域设置计算机(使用System.Net):


这是在internet上运行还是在intranet上运行?如果它在web上运行,出于安全原因,您可能无法访问主机名和windows用户名等详细信息。我从未尝试过,但似乎这些东西可能受到保护/不可用。这是在intranet上。我认为问题在于IIS上的身份验证模式,我现在在IIS 7中启用了匿名身份验证。我正在考虑使用JavaScript函数来检索此信息。我相信您需要打开windows身份验证才能使其工作。我更喜欢使用annonymous auth。看起来它不可能通过。谢谢,我试着使用你的建议,但我收到的数据与我的例子完全相同。我忘了查看annonymous身份验证模式,但如果可能的话,我仍然希望在不更改它的情况下查看它。您无法使用匿名身份验证获取用户名,因为没有用户。当我在VS的调试模式下尝试时,它会向用户显示域,这会怎么样?这是因为VS IIS服务器禁用了匿名身份验证?你知道我是否可以用JavaScript来做吗?感谢您的帮助。有关VS和windows身份验证,请参阅。不,我不知道如何从javascript获取用户名(没有使用服务器端代码访问
User.Identity.Name
)的ajax)。看见
Dns.GetHostEntry(Request.UserHostAddress).HostName.ToString()