Asp.net MVC获取访问系统的客户端计算机的主机名和IP地址

转载 2017年07月27日 10:17:27
本文转载自:http://www.cnblogs.com/purplefox2008/p/5983957.html
string HostName = string.Empty;
string ip = string.Empty;
string ipv4 = String.Empty;
 
if (!string.IsNullOrEmpty(System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"]))
     ip = Convert.ToString(System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]);
if (string.IsNullOrEmpty(ip))
     ip = Request.UserHostAddress;
 
 // 利用 Dns.GetHostEntry 方法,由获取的 IPv6 位址反查 DNS 纪录,<br> // 再逐一判断何者为 IPv4 协议,即可转为 IPv4 位址。
foreach (IPAddress ipAddr in Dns.GetHostEntry(ip).AddressList)
{
    if (ipAddr.AddressFamily.ToString() == "InterNetwork")
    {
        ipv4 = ipAddr.ToString();
    }
}
 
HostName = "主机名: " + Dns.GetHostEntry(ip).HostName + " IP: " + ipv4;

  在本机进行程序代码调试测试,其中字符串ip会显示为::1,是IPv6的IP地址格式,相当于127.0.0.1。最终处理成IPv4的显示地址。

-------------------------------------------------------------------------------------------------------------------------------------------------

上述方法,代码调试没有问题,但是放在服务器上后,客户端访问就出问题了,有部分电脑能获取主机名,但是ipv4显示为空,另外一部分

Dns.GetHostEntry(ip)中的ip正常,但是执行Dns.GetHostEntry(ip)貌似为null,导致出现异常。最后选择的方法是只记录客户端的IPV4,

复制代码
/// <summary>
        /// 获取web客户端ip
        /// </summary>
        /// <returns></returns>
        public static string GetWebClientIp()
        {

            string userIP = "未获取用户IP";

            try
            {
                if (System.Web.HttpContext.Current == null
                 || System.Web.HttpContext.Current.Request == null
                 || System.Web.HttpContext.Current.Request.ServerVariables == null)
                {
                    return "";
                }

                string CustomerIP = "";

                //CDN加速后取到的IP simone 090805
                CustomerIP = System.Web.HttpContext.Current.Request.Headers["Cdn-Src-Ip"];
                if (!string.IsNullOrEmpty(CustomerIP))
                {
                    return CustomerIP;
                }

                CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

                if (!String.IsNullOrEmpty(CustomerIP))
                {
                    return CustomerIP;
                }

                if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
                {
                    CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                   
                    if (CustomerIP == null)
                    { 
                        CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 
                    }
                }
                else
                {
                    CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
                }

                if (string.Compare(CustomerIP, "unknown", true) == 0 || String.IsNullOrEmpty(CustomerIP))
                {
                    return System.Web.HttpContext.Current.Request.UserHostAddress;
                }
                return CustomerIP;
            }
            catch { }

            return userIP;

        }

mvc获取ip 穿过代理获取真正的ip

/// /// 获取真ip /// /// public string GetRealIP() { ...
  • lybwwp
  • lybwwp
  • 2014年12月23日 21:59
  • 5440

c#获取客户端IP

/// /// 获取客户端IP地址(无视代理) /// /// 若失败则返回回送地址 public static string GetHostAddress...
  • for12
  • for12
  • 2015年12月02日 15:56
  • 2864

ASP.NET获取客户端计算机IP地址和主机名

需要类:PagePage 的名称空间是:System.Web.UI 该名称空间默认是导入的。再导入Net命名空间。 核心代码: using System.Net; string clientIP...
  • mituan1234567
  • mituan1234567
  • 2014年04月24日 15:06
  • 1817

.NET中获取电脑名,IP地址,当前用户

在.NET中获取一台电脑名,IP地址及当前用户名是非常简单,以下是我常用的几种方法,如果大家还有其它好的方法,可以回复一起整理:1. 在ASP.NET中专用属性:获取服务器电脑名: Page.Serv...
  • 21aspnet
  • 21aspnet
  • 2004年11月04日 19:10
  • 3756

.net 根据ip获得局域网主机名和物理地址

根据ip获得局域网主机名和物理地址。使用Win32API
  • fhl812432059
  • fhl812432059
  • 2016年04月13日 14:28
  • 507

asp.net 获取客户端浏览器,ip地址,操作系统信息

public class CheckIP { #region 获取浏览器版本号 /// /// 获取浏览器版本号 /// /// public static string GetBrowser() {...
  • lybwwp
  • lybwwp
  • 2013年12月19日 14:56
  • 8909

.net获取客户端主机名和ip地址

  • 2011年04月21日 19:37
  • 643B
  • 下载

Asp.Net获取电脑名,IP地址及当前用户名的方法

在.NET中获取一台电脑名,IP地址及当前用户名是非常简单,以下是我常用的几种方法,如果大家还有其他好的方法,可以回复一起整理:    1. 在ASP.NET中专用属性:    获取服务器电脑名:Pa...
  • wendy1001
  • wendy1001
  • 2006年08月12日 13:18
  • 1460

利用Asp.net获取主机名和IP地址

  • 2010年09月28日 10:31
  • 965B
  • 下载

.NET MVC获取客户端IPV4地址

.NET MVC获取客户端IPV4地址
  • sodzw709
  • sodzw709
  • 2017年03月03日 15:04
  • 587
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Asp.net MVC获取访问系统的客户端计算机的主机名和IP地址
举报原因:
原因补充:

(最多只允许输入30个字)