【问题标题】:How do you get the IP address from a request in ASP.NET?如何从 ASP.NET 中的请求中获取 IP 地址?
【发布时间】:2010-10-26 09:40:06
【问题描述】:

我一直在尝试解决这个问题,但在向适用于所有服务器的 asp.net 中的页面发出请求时,找不到可靠的方法来获取客户端 IP 地址。

【问题讨论】:

标签: c# asp.net ip-address


【解决方案1】:

您可以将 HttpContext 与以下属性一起使用:

var _request1 = HttpContext.Current.Request.UserHostAddress;
        string requestedDomain = HttpContext.Current.Request.ServerVariables["HTTP_HOST"];
        string requestScheme = HttpContext.Current.Request.Url.Scheme;
        string requestQueryString = HttpContext.Current.Request.ServerVariables["QUERY_STRING"];
        string requestUrl = HttpContext.Current.Request.ServerVariables["URL"];

【讨论】:

    【解决方案2】:

    如果客户端和服务器之间有代理。 HTTP_X_FORWARDED_FOR 标头可以使用。

    var ips = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    var clientIp = "";
    if (!string.IsNullOrEmpty(ips))
    {
        string[] addresses = ips.Split(',');
        if (addresses.Length != 0)
        {
            clientIp = addresses[0];
        }
    }
    else
    {
        clientIp = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
    }
    

    【讨论】:

      【解决方案3】:

      试试这个代码:

      var IpAddress = Request.Headers["Referer"][0];
      

      【讨论】:

      • 请考虑为您的问题添加一些描述,或者可能是指向此文档的链接。这将有助于这个答案在未来更加完整和有用。
      【解决方案4】:
      Request.ServerVariables["REMOTE_ADDR"]
      

      要访问 C# 上的索引或属性,您应该使用 [ ] 而不是 ( )

      【讨论】:

      • 不可调用的成员 'System.Web.HttpRequest.ServerVariables' 不能像方法一样使用。
      【解决方案5】:
      System.Web.HttpContext.Current.Request.UserHostAddress;
      

      【讨论】:

      • 您可能想解释为什么这个答案比已经给出的答案更好(2009 年和 2015 年)
      • @HansKesting 这是完整的参考。这不是提问者的答案,但对于今天其他任何人都需要它
      【解决方案6】:

      使用此代码:

      public static string GetIpAddress()
          {
              return HttpContext.Current != null ? HttpContext.Current.Request.UserHostAddress : "";
          }
      

      【讨论】:

      • 请更好地解释您的答案,而不是仅仅输入代码。试着解释一下你为什么这样回答。
      • HttpContext.Current.Request.UserHostAddress 这包含我们的IP地址首先我们必须检查HttpContext.Current是否为空
      • 在 Asp.net public static string GetIpAddress() { return HttpContext.Current != null ? HttpContext.Current.Request.UserHostAddress : ""; }
      【解决方案7】:
       IpAddress=HttpContext.Current.Request.UserHostAddress;
      

      【讨论】:

        【解决方案8】:

        一种方法是使用Request对象:

        protected void Page_Load(object sender, EventArgs e)
        {
            lbl1.Text = Request.UserHostAddress;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-06
          • 2012-04-23
          • 1970-01-01
          • 2014-04-24
          相关资源
          最近更新 更多