जाहिरा तौर पर आप आसानी से WCF 3.5 में क्लाइंट IP पता प्राप्त कर सकते हैं लेकिन WCF 3.0 में नहीं। किसी को पता है कैसे?
जवाबों:
यह 3.0 में आपकी मदद नहीं करता है, लेकिन मैं सिर्फ लोगों को इस सवाल का पता लगाने और निराश होने के कारण देख सकता हूं क्योंकि वे 3.5 में क्लाइंट आईपी एड्रेस प्राप्त करने की कोशिश कर रहे हैं। इसलिए, यहां कुछ कोड काम करने चाहिए:
using System.ServiceModel;
using System.ServiceModel.Channels;
OperationContext context = OperationContext.Current;
MessageProperties prop = context.IncomingMessageProperties;
RemoteEndpointMessageProperty endpoint =
prop[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
string ip = endpoint.Address;
यह पता चलता है कि जब तक आप (ए) आपकी सेवा को वेब सेवा (जाहिर है) और (बी) में होस्ट कर रहे हैं, आप इस प्रकार से AspNetCompatibility मोड को सक्षम कर सकते हैं:
<system.serviceModel>
<!-- this enables WCF services to access ASP.Net http context -->
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
...
</system.serviceModel>
और फिर आप द्वारा आईपी पता प्राप्त कर सकते हैं:
HttpContext.Current.Request.UserHostAddress
HttpContext.Current.Request.UserHostAddress
यदि आप .NET 3.0 SP1 को लक्षित कर रहे हैं, तो आप कर सकते हैं।
OperationContext context = OperationContext.Current;
MessageProperties prop = context.IncomingMessageProperties;
RemoteEndpointMessageProperty endpoint = prop[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
string ip = endpoint.Address;
क्रेडिट: http://blogs.msdn.com/phenning/archive/2007/08/08/remoteendpointmessageproperty-in-wcf-net-3-5.aspx