Wie kann ich die aktuelle Besucher-IP-Adresse abrufen?Benutzer-IP-Adresse abrufen
Antwort
HttpContext.Current.Request.UserHostAddress;
oder
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
oder
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
Request.UserHostAddress
Edit: fand auch eine interessante Frage in Bezug auf IP-verwandte HTTP-Header here.
Edit2: Wie in den Kommentaren erwähnt und in Verbindung bereitgestellt I oben kann HTTP_X_FORWARDED_FOR
Header mehrere IP-Adressen durch Komma getrennt enthalten. Ich war nicht mit dieser Situation konfrontiert, nehme aber an, dass einige Korrekturen meiner Antwort erforderlich sind.
ich diesen Code verwenden, um die IP-Adresse zu erhalten (es gibt IPAddress.None
Wert, wenn aus irgendeinem Grund fehlgeschlagen bekommen):
/// <summary>
/// Gets the IP address of the request.
/// <remarks>
/// This method is more useful than built in because in some cases it may show real user IP address even under proxy.
/// <summary>
/// Gets the IP address of the request.
/// <remarks>
/// This method is more useful than built in because in some cases it may show real user IP address even under proxy.
/// The <see cref="System.Net.IPAddress.None" /> value will be returned if getting is failed.
/// </remarks>
/// </summary>
/// <param name="request">The HTTP request object.</param>
/// <returns></returns>
public static IPAddress GetIp(this HttpRequest request)
{
string ipString;
if (string.IsNullOrEmpty(request.ServerVariables["HTTP_X_FORWARDED_FOR"]))
{
ipString = request.ServerVariables["REMOTE_ADDR"];
}
else
{
ipString = request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
.FirstOrDefault();
}
IPAddress result;
if (!IPAddress.TryParse(ipString, out result))
{
result = IPAddress.None;
}
return result;
}
+1 für die Rückgabe als IPAddress-Objekt –
Beachten Sie, dass der Header 'X-Forwarded-For' gefälscht werden kann. Treffen Sie daher keine Sicherheitsentscheidungen. Überprüfen Sie den Wert "HTTP_X_FORWARDED_FOR" nur, wenn sich die Maschine hinter einem Load Balancer oder Reverseproxy befindet. – devstuff
Beachten Sie außerdem, dass HTTP_X_FORWARDED_FOR mehrere IP-Adressen enthält, wenn mehrere Proxys übergeben werden. Behandelt die Parse-Methode das korrekt? – Tomas
public String GetIP()
{
string ipString;
if (string.IsNullOrEmpty(Request.ServerVariables["HTTP_X_FORWARDED_FOR"]))
{
ipString = Request.ServerVariables["REMOTE_ADDR"];
}
else
{
ipString = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).FirstOrDefault();
}
return ipString;
}
Zuerst versuchen Proxy IP, um herauszufinden, ob seine Null wir bekommen können dass das System IP
Versuchen Sie, diese externe IP-Adresse des Benutzers zu erhalten ..
public static string getExternalIp()
{
try
{
string externalIP;
externalIP = (new WebClient()).DownloadString("http://checkip.dyndns.org/");
externalIP = (new Regex(@"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"))
.Matches(externalIP)[0].ToString();
return externalIP;
}
catch { return null; }
}
- 1. Roslyn: Aktuelles Projekt abrufen/Aktuelles Dokument abrufen
- 2. Berechtigungen abrufen
- 3. IP.Adresse Abrufen
- 4. Datenbankergebnis abrufen
- 5. Benutzerkonto abrufen
- 6. Bildschirmauflösung abrufen
- 7. Abrufen der Sicherheitsbeschreibung und Abrufen der Nummer für FileSystemRights
- 8. Abrufen von Cassandra-Zeilenschlüsseln
- 9. Architektur aus Java abrufen
- 10. Drop-Down-Wert abrufen
- 11. Abrufen von Daten
- 12. FreeMarker - Aktuelle URL abrufen
- 13. Assoziative Array-Schlüssel abrufen
- 14. RoleCollection als Zeichenfolge abrufen
- 15. SQL-Daten abrufen - C#
- 16. Sitzungs-Cookie-Name abrufen
- 17. nUnit-Kategorien programmatisch abrufen
- 18. Abrufen des SCON-Stammverzeichnisses
- 19. Attribute in PyQuery abrufen?
- 20. Abrufen Sammlung von Objekten
- 21. Select2 Ausgewählte Optionsdaten abrufen
- 22. Portnummer für Servicename abrufen?
- 23. Binärdaten abrufen, ohne Arraybuffer
- 24. XAML: Übergeordneten Hintergrund abrufen
- 25. Aktuelle Systemzeit abrufen?
- 26. Delphi Abrufen der Dateiposition
- 27. Workflow-verknüpfte Listenelemente abrufen
- 28. Aktuellen Methodennamen abrufen
- 29. Programmgesteuertes Abrufen des Webanforderungsinitiators
- 30. r - abrufen eindeutiges Sequenzmuster
Was ist das abweichen zwischen den beiden ersten Alternativen? –