2015-05-19 5 views
8

Ich möchte die IP-Adresse des Clients erfassen, der meinen Web-API-Dienst aufruft. Ich versuche, diese IP-Adresse in einem benutzerdefinierten Authentifizierungsfilter zu erfassen, den ich erstellt habe.Capture-Anfrage IP-Adresse im Web-API-Authentifizierungsfilter

Ist die IP-Adresse der Anfrage von HttpActionContext verfügbar?

Ich kann nicht scheinen, es zu finden.

Ist der Authentifizierungsfilter der falsche Ort, an dem die IP-Adresse des Clients, der die Anfrage stellt, erfasst wird?

Antwort

24

Vor kurzem fand ich die folgende Erweiterung Methode dafür:

public static string GetClientIpAddress(this HttpRequestMessage request) 
{ 
    if (request.Properties.ContainsKey("MS_HttpContext")) 
    { 
     return IPAddress.Parse(((HttpContextBase)request.Properties["MS_HttpContext"]).Request.UserHostAddress).ToString(); 
    } 
    if (request.Properties.ContainsKey("MS_OwinContext")) 
    { 
     return IPAddress.Parse(((OwinContext)request.Properties["MS_OwinContext"]).Request.RemoteIpAddress).ToString(); 
    } 
    return null; 
} 

Sie jetzt HttpActionContext.Request.GetClientIpAddress()

+0

wow nennen kann! Fantastisch. Danke für Ihre Hilfe! –

Verwandte Themen