54 Stimmen

Wie erhalte ich die IP-Adresse des Aufrufers in einer WebMethode?

Wie erhalte ich die IP-Adresse des Aufrufers in einer WebMethode?

[WebMethod]
public void Foo()
{
    // HttpRequest... ? - Not giving me any options through intellisense...
}

mit C# und ASP.NET

86voto

Darren Kopp Punkte 74401

4 Stimmen

Wenn Sie System.InvalidOperationException "HttpContext ist nicht verfügbar. Diese Klasse kann nur im Kontext einer ASP.NET-Anforderung verwendet werden." HttpContext in Context wird nicht verfügbar sein, ohne dass einige Dinge in der web.config hinzugefügt werden. <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />. <AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)>

9voto

davenpcj Punkte 12248

Nur eine Warnung. IP-Adressen können nicht zur eindeutigen Identifizierung von Clients verwendet werden. NAT-Firewalls und Unternehmens-Proxys sind überall und verbergen viele Benutzer hinter einer einzigen IP-Adresse.

0 Stimmen

Außerdem können alle HTTP-Header leicht gefälscht werden. Derselbe Code, der gültige Daten in sie einfügt, kann auch dazu verwendet werden, ungültige Daten einzufügen.

7voto

Kev Punkte 115293

Versuchen Sie es:

Context.Request.UserHostAddress

4voto

Aaron Powell Punkte 24630

Versuchen Sie dies:

string ipAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

Ich habe es nicht in einer webMethod versucht, aber ich verwende es in Standard-HttpRequests

2voto

Troels Thomsen Punkte 10875

Der HttpContext ist tatsächlich innerhalb der WebService Basisklasse, verwenden Sie also einfach Context.Request (oder HttpContext.Current der auch auf den aktuellen Kontext verweist), um Zugriff auf die Mitglieder zu erhalten, die von der HttpRequest .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X