c# - 在 ASP.NET Web API 中获取 Web Api 消费者 IP 地址和主机名

标签 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["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

关于c# - 在 ASP.NET Web API 中获取 Web Api 消费者 IP 地址和主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15712720/

相关文章:

c# - 为什么最后一行永远不会被读取?

c# - 对于非 OK 响应,使用 IHttpActionResult 返回内容

c# - 如何在 C# 中模拟来自 httpclient 的响应,Azure 函数,如何测试

angularjs - 从 WAAD 获取用户组的最简单方法是什么?

asp.net - 不记名 token - 两个因素 - ASP.NET 身份

asp.net-web-api - MVC Web Api CamelCase PropertyName 不适用于 BadRequest

C#、WPF、Visual Studio 4 : irregular shape color filling

c# - 匿名方法/函数 : a fundamental feature or a violation of OO principles?

javascript - Breezejs angularjs 中的双重麻烦

c# - 如何在 WebApi 中为属性实现 DI?