2010-08-28 11 views
21

अरे, कैसे आप निम्नलिखित की तरह कुछ में एक अनुरोध करने वाले व्यक्ति का आईपी पता मिलता है:डब्ल्यूसीएफ 4 बाकी अनुरोध का आईपी प्राप्त कर रहा है?

[ServiceContract]  
    [AspNetCompatibilityRequirements(RequirementsMode = 
    AspNetCompatibilityRequirementsMode.Required)]  
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]   
    public partial class UsersService 
    {       
     [WebInvoke(UriTemplate = "", Method = "PUT")]   
     public User AddNewUser(User newUser) 
     {    
      // code goes here including GETTING AN IP?? 
     } 

धन्यवाद!

उत्तर

38

अंदर AddNewUser स्निपेट के उपयोग:

OperationContext context = OperationContext.Current; 
MessageProperties messageProperties = context.IncomingMessageProperties; 
RemoteEndpointMessageProperty endpointProperty = 
    messageProperties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty; 

RemoteEndpointMessageProperty उदाहरण पता और पोर्ट गुण प्रदान करता है।

+1

समस्या यह है कि जब तक नेट 4 में कुछ बदल नहीं जाता है, तो WebHttp बाइंडिंग का उपयोग करते समय ऑपरेशन कॉन्टेक्स्ट को पकड़ने के लिए यह वास्तविक दर्द है। मैं एक संदेश निरीक्षक बनाकर ऐसा करने में सक्षम था, लेकिन इसे थोड़ी-थोड़ी जंपिंग छोड़ने की आवश्यकता है। –

+0

मुझे यकीन नहीं है कि इसका मतलब क्या है। ऑपरेशन कॉन्टेक्स्ट को किसी भी डब्ल्यूसीएफ कॉल में उपलब्ध होना चाहिए, भले ही यह आरईएसटी सेवा WebHttp बाइंडिंग पर उजागर हो। मैंने इसे डब्ल्यूसीएफ 4 में परीक्षण किया और यह काम करता है। –

+0

.NET 3.5 में WebHttp बाइंडिंग के साथ आप WebOperationContext तक पहुंच सकते हैं, लेकिन ऑपरेशन कॉन्टेक्स्ट सीधे उपलब्ध नहीं था। मुझे यह सुनकर खुशी हो रही है कि उन्होंने 4.0 में तय किया है। –

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