私のサイトを閲覧しているユーザーの IP アドレスを見つけるのに助けが必要です (C# コードを使用)。
システムの IP アドレス、ISP の IP アドレス、ネットワーク アドレス、および IPV4 と IPV6 について混乱しています。
以下は、他のソースから取得したコードです。
protected string GetUserIP()
{
string userIP = string.Empty;
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)
{
userIP = addresses[0];
}
}
else if (HttpContext.Current.Request.UserHostAddress.Length != 0)
{
userIP = HttpContext.Current.Request.UserHostAddress;
}
return userIP;
}
しかし、ここでは期待した結果が得られません。
これをローカルホストでテストすると、127.0.0.1 が得られました
これを開発サーバーにデプロイし、ローカル マシンでページを参照すると、別のアドレスが表示されました。
別のマシンで同じ URL にアクセスしようとしましたが、IP アドレスは同じです。
同じネットワーク内の開発サーバーにデプロイされたページにアクセスするために使用しているシステム。
それで、それは私のコードが返したネットワークIPですか..?
ipconfig コマンドを使用して自分の IP を見つけると、それはまた別のものになるからです。
また、サードパーティのサイト ( http://www.whatismyip.com/ip-address-lookup/ ) を使用して自分の IP を確認したところ、予想した実際の IP が表示されました。C# コードを使用して実際の IP を取得するにはどうすればよいですか?
私の最終的な目標は、Maxmind City DB を使用して自分のサイトを閲覧しているユーザーの場所の詳細を取得することですが、そのためには閲覧ユーザーの IP を渡す必要があります。
string ip = GetUserIP();
string db = “GeoIP2-City.mmdb";
var reader = new DatabaseReader(db);
var city = reader.City(ip);
double? lat = city.Location.Latitude;
double? lang = city.Location.Longitude;
上記のコードから取得した IP については、Maxmind DB から情報を取得しようとしたときに例外 (データベースに IP が見つかりません) が発生しましたが、「whatismyip」Web サイトから取得した IP については、Maxmind DB から詳細を取得しました。 .
私の質問は明確です。誰か入力があれば教えてください。
ありがとう、シャラス