2

サイト開発しました。サイト訪問者の IP を取得する必要があります。Request を使用しようとしましたが、内部 IP しかありません:

Response.Write(Request.ServerVariables["REMOTE_ADDR"]);

サーバー変数コレクションのすべてのキーを調べました-同じ結果:

foreach (string var in Request.ServerVariables)
{
    Response.Write(Request[var]);
}

外部 IP アドレスを取得するにはどうすればよいですか?

4

5 に答える 5

1

この nuget パッケージを簡単に使用できます。 https://www.nuget.org/packages/IpPublicKnowledge/

簡単でシンプル。ここに例があります:

// Get Public IP
            var ip = IPK.GetMyPublicIp();

            //Get all IP infos
            var IPinfo = IPK.GetIpInfo(ip);

            //print some info
            Console.WriteLine("*--------------------------- IPK -----------------------------*");

            Console.WriteLine("My public IP : " + IPinfo.IP);
            Console.WriteLine();
            Console.WriteLine("My ISP : " + IPinfo.isp);
            Console.WriteLine();
            Console.WriteLine("My Country : " + IPinfo.country);
            Console.WriteLine();
            Console.WriteLine("My Languages : ");

            foreach (var lang in IPinfo.languages)
            {
                Console.WriteLine(" " + lang.Key + " : " + lang.Value);
            }

            Console.WriteLine("*-------------------------------------------------------------*");
            Console.Read();
于 2016-10-03T10:00:34.243 に答える
1

ロードバランサー/プロキシの背後にいますか? その場合は、リクエストのヘッダー コレクションで のようなヘッダーを調べX-FORWARDED-FORます。

于 2013-04-11T12:00:42.407 に答える
1

このように使用できます

String lstrIpAddress;
if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null || Request.ServerVariables["HTTP_CLIENT_IP"] != null)
    lstrIpAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
else
    lstrIpAddress = Request.ServerVariables["REMOTE_ADDR"];
于 2013-04-11T12:02:48.310 に答える