2012-09-26 12 views
14

में उपयोगकर्ता आईपी कैसे प्राप्त करें मैंने Request.UserHostAddress; की कोशिश की है लेकिन एपीआई नियंत्रक के पास UserHostAddress अनुरोध के अंदर नहीं है।एएसपी.नेट एमवीसी एपीआई कंट्रोलर

+1

क्षमा करें, मैं उलझन में था। इस अन्य प्रश्न की जांच करें: http://stackoverflow.com/questions/9565889/get-the-ip-address-of-the-remote-host –

उत्तर

16
IP = ((HttpContextBase)request.Properties["MS_HttpContext"]).Request.UserHostAddress; 
6

this के अनुसार, एक और अधिक पूरा तरीका होगा:

private string GetClientIp(HttpRequestMessage request) 
{ 
    if (request.Properties.ContainsKey("MS_HttpContext")) 
    { 
     return ((HttpContext)request.Properties["MS_HttpContext"]).Request.UserHostAddress; 
    } 
    else if (request.Properties.ContainsKey(RemoteEndpointMessageProperty.Name)) 
    { 
     RemoteEndpointMessageProperty prop; 
     prop = (RemoteEndpointMessageProperty)this.Request.Properties[RemoteEndpointMessageProperty.Name]; 
     return prop.Address; 
    } 
    else 
    { 
     return null; 
    } 
} 

अतीत में, MVC 3 परियोजनाओं (नहीं एपीआई,) पर हम निम्न का उपयोग करते थे:

string IPAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 

if (String.IsNullOrEmpty(IPAddress)) 
    IPAddress = Request.ServerVariables["REMOTE_ADDR"]; 
+1

मैं थोड़ा अतिरिक्त शोध कर रहा था क्योंकि यह अजीब लगा कि आप उठाएंगे सर्वर चर में एक अनुरोध शीर्षलेख। context.Request.ServerVariables ["HTTP_X_FORWARDED_FOR"] एक्स-फॉरवर्ड-अप प्रॉक्सी सर्वर और लोड बैलेंसर्स द्वारा भेजे गए अनुरोध हेडर के लिए उठा रहा है जो उठा रहा है। – muglio

11

मैं निम्नलिखित कोड का उपयोग कर रहा हूं और यह मेरे लिए काम करता है ....

string ipAddress = System.Web.HttpContext.Current.Request.UserHostAddress; 
+0

यह होस्ट पता देता है –

संबंधित मुद्दे