在ASP.NET Web API中获取Web Api使用者IP地址和HostName

SOF*_*ser 2 c# asp.net-web-api

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

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

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;
  }
Run Code Online (Sandbox Code Playgroud)

Wik*_*hla 8

解析名称听起来不错.如果从dns无法解析的客户端计算机调用该怎么办?我告诉你,dns需要永远,然后失败,你必须捕获并记录为"未知主机名".

至于请求地址,只需获取它

 HttpContext.Current.Request.UserHostAddress
Run Code Online (Sandbox Code Playgroud)