【问题标题】:Get Web Api consumer IP Address and HostName in ASP.NET Web API在 ASP.NET Web API 中获取 Web Api 使用者 IP 地址和主机名
【发布时间】:2015-05-17 12:26:21
【问题描述】:

我已经托管了在 ASP.net 中开发的 Web Api。我想如果有人调用我的 API,以便稍后我想使用 C# 拒绝来自特定 ID 的请求,我可以登录数据库。

获取消费者 IP 和主机名的最佳做法是什么?

public static string GetIP4Address()
  {
    string IP4Address = String.Empty;

    foreach (IPAddress IPA in Dns.GetHostAddresses(Request.ServerVariables["REMOTE_ADDR"].ToString())))
    {
      if (IPA.AddressFamily.ToString() == "InterNetwork")
      {
        IP4Address = IPA.ToString();
        break;
      }
    }

    if (IP4Address != String.Empty)
    {
      return IP4Address;
    }

    foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName()))
    {
      if (IPA.AddressFamily.ToString() == "InterNetwork")
      {
        IP4Address = IPA.ToString();
        break;
      }
    }

    return IP4Address;
  }

【问题讨论】:

    标签: c# asp.net-web-api


    【解决方案1】:

    解析名称听起来是个坏主意。如果从 dns 无法解析的客户端计算机调用您怎么办?我告诉你,dns 需要很长时间,然后失败,你必须捕获并记录为“未知主机名”的异常。

    至于请求地址,用

    获取即可
     HttpContext.Current.Request.UserHostAddress
    

    【讨论】:

    • @SOFUser - HttpContext.Current.Request.UserHostName`
    • @SOFUser - 如果您阅读那篇非常古老的文章中的 cmets,您会发现他正在查看的标题很容易被伪造,这不是推荐的方法。
    猜你喜欢
    • 2023-03-09
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 2022-11-22
    相关资源
    最近更新 更多