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 に答える