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

时间:2012-07-10 16:20:33

标签: c# asp.net

我有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">

2 个答案:

答案 0 :(得分:6)

使用HttpRequest.UserHostAddressHttpRequest.UserHostName作为客户端IP和计算机名称。

假设您已正确配置身份验证,您可以从IIdentity.Name获取客户端用户。

Page的上下文中,您可以使用Request.UserHostAddressRequest.UserHostNameUser.Identity.Name

答案 1 :(得分:0)

我用它来显示我的Intranet上的客户端语言环境机器(使用System.Net):

Dns.GetHostEntry(Request.UserHostAddress).HostName.ToString()