-1

ASP.NET アプリケーションのユーザーのローカル IP を取得する必要があり、次の方法を使用しています。

protected string GetIPAddress()
{
    System.Web.HttpContext context = System.Web.HttpContext.Current;

    string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

    if (!string.IsNullOrEmpty(ipAddress))
    {
        string[] addresses = ipAddress.Split(',');
        if (addresses.Length != 0)
        {
            return addresses[0];
        }
    }

    return context.Request.ServerVariables["REMOTE_ADDR"];
}

ただし、Web サイトを公開すると192.168.2.1、ユーザーがどこから Web サイトを開いているかに関係なく、常に取得されます。

この問題を解決する方法を知っている人はいますか?

4

2 に答える 2

0

クライアントのIPアドレスはHTTP_X_FORWARDED_FORまたはから取得できますREMOTE_ADDR

var ipAddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

if (string.IsNullOrEmpty(ipAddress ))
{
    ipAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}

return ipAddress;
于 2012-11-01T09:27:29.390 に答える
0

一部のネットワーク デバイスはX-forwarded-forヘッダーを利用します。アプリケーションにヒットするリクエストにこのヘッダーがあるかどうかを確認する必要があります。

于 2012-11-01T09:20:57.407 に答える