2

我已经托管了在 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;
  }
4

1 回答 1

8

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

至于请求地址,只要得到它

 HttpContext.Current.Request.UserHostAddress
于 2013-03-29T23:21:48.167 回答