程序开发 > C# > 正文

C#获取客户端IP地址的三种方法

亮术网 2020-08-11 本网原创

C#获取客户端IP地址通常有三种方法,第一种用 HTTP_X_FORWARDED_FOR,第二种用 REMOTE_ADDR,第三种用 UserHostAddress;三种方法都要用 Request。

有些时候,用某种方法可能无法获取到 IP,所以最好三种方法同时用,当然需要加 if 判断。接下来先介绍每种方法,再把三种方法封装成一个可供调用的方法。

 

一、用 HTTP_X_FORWARDED_FOR 获取客户端IP地址

///<summary>
  ///C# 获取客户端IP地址<
  ///</summary>
  ///<returns>IP地址</returns>

  public string GetClientIPAddr()
  {
    return Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
  }

 

二、用 REMOTE_ADDR 获取IP

///<summary>
  ///C# 获取IP地址
  ///</summary>
  ///<returns>IP地址</returns>

  public string GetClientIPAddr()
  {
    return Request.ServerVariables["REMOTE_ADDR"];
  }

 

三、用 UserHostAddress 获取IP

///<summary>
  ///C# 获取IP地址
  ///</summary>
  ///<returns>IP地址</returns>

  public string GetClientIPAddr()
  {
    return Request.UserHostAddress;
  }

 

四、三种方法并用获取IP(可直接调用)

///<summary>
  ///获取客户端IP地址
  ///</summary>
  ///<returns>IP地址</returns>

  public string GetClientIPAddr()
  {
    string ipAddr = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    if (string.IsNullOrEmpty(ipAddr))
      ipAddr = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

  if (string.IsNullOrEmpty(ipAddr))
      ipAddr = HttpContext.Current.Request.UserHostAddress;

  return ipAddr;
  }

以上获取IP地址的方法,在实际应用中通过测试,能准确获取到客户端IP地址;如果要使用,直接用第四种并用方法即可。