C# 在ASP.NET Web Api中获取Web Api使用者IP地址和主机名

C# 在ASP.NET Web Api中获取Web Api使用者IP地址和主机名,c#,asp.net-web-api,C#,Asp.net Web Api,我主持了在ASP.net中开发的Web Api。我想知道是否有人调用我的API,以便我可以稍后登录数据库,如果我想使用C#拒绝来自特定id的请求 获取消费者IP和主机名的最佳实践是什么 public static string GetIP4Address() { string IP4Address = String.Empty; foreach (IPAddress IPA in Dns.GetHostAddresses(Request.ServerVariables["R

我主持了在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;
  }

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

至于请求地址,只需使用

 HttpContext.Current.Request.UserHostAddress

@SOFUser-HttpContext.Current.Request.UserHostName`@SOFUser-如果你阅读了那篇非常老的文章中的评论,你会发现他看到的标题很容易被伪造,这不是推荐的方法。