मैंने आने वाली कॉल लॉग करने के लिए एक वेब एपीआई कस्टम एक्शन फ़िल्टर बनाया है। मैं कॉलर का आईपी पता पाने की कोशिश कर रहा हूं और जो कुछ भी मैंने पाया है, वह Request.UserHostAddress
का उपयोग करने के लिए कहता है। समस्या यह है कि कोई फर्क नहीं पड़ता कि कॉल कहां से आ रहा है, आईपी वही है।WebAPI कस्टम एक्शन फ़िल्टर में Request.UserHostAddress प्राप्त करते समय मुझे हमेशा एक ही आईपी क्यों मिलता है?
public class LogActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
var name = actionContext.ActionDescriptor.ActionName;
// Get the sender address
var caller = ((HttpContextWrapper)actionContext.Request.Properties["MS_HttpContext"]).Request.UserHostAddress;
// Log the call
SystemBL.InsertSiteLog("WebAPI:" + name, "From:" + caller);
}
}
मैं भी साथ की कोशिश की है:
यहाँ मेरी कार्रवाई फ़िल्टर के लिए कोड है
var caller = ((HttpContextWrapper)actionContext.Request.Properties["MS_HttpContext"]).Request.ServerVariables["REMOTE_ADDR"].ToString();
लेकिन परिणाम एक ही था। कोई विचार?
क्या यहां एचटीपीएक्शन कॉन्टेक्स्ट पैरामीटर का उपयोग करना बेहतर है और आईपी प्राप्त करना या बेहतर समाधान स्थिर विधि का उपयोग करना है जो एचटीपी कॉन्टेक्स्ट का उपयोग यहां करता है: [link] (https://stackoverflow.com/questions/1907195/how- टू-गेट-आईपी-एड्रेस) मुझे यकीन नहीं है कि मैंने किस दृष्टिकोण को चुना होगा। – krypru
ऐसा कुछ समय हो गया है जब से मैंने ऐसा किया लेकिन मुझे लगता है कि यह इस बात पर निर्भर करता है कि आप इसका उपयोग कहां कर रहे हैं। मेरे मामले में मैं इसे फ़िल्टर विशेषता में कर रहा था जिसके पास HttpContext से वर्तमान संदर्भ तक पहुंच नहीं है। यदि आप इसे नियमित एमवीसी एक्शन में कर रहे हैं तो मैं कहूंगा कि एचटीपी कॉन्टेक्स्ट का उपयोग करें क्योंकि यह थोड़ा क्लीनर लगता है। बस पता पार्सिंग करना न भूलें और सूची में अंतिम आईपी का उपयोग करें। – Jason