Apparemment, vous pouvez facilement obtenir une adresse IP cliente dans WCF 3.5 mais pas dans WCF 3.0. Quelqu'un sait comment?
Il s'avère que vous pouvez, tant que (a) votre service est hébergé dans un service Web (évidemment) et (b) vous activez le mode AspNetCompatibility, comme suit:
<system.serviceModel>
<!-- this enables WCF services to access ASP.Net http context -->
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
...
</system.serviceModel>
Et puis vous pouvez obtenir l'adresse IP en:
HttpContext.Current.Request.UserHostAddress
Cela ne vous aide pas dans 3.0, mais je peux juste voir des gens trouver cette question et être frustrés parce qu'ils essaient d'obtenir l'adresse IP du client en 3.5. Voici donc du code qui devrait fonctionner:
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;
Vous pouvez le faire si vous ciblez .NET 3.0 SP1.
OperationContext context = OperationContext.Current;
MessageProperties prop = context.IncomingMessageProperties;
RemoteEndpointMessageProperty endpoint = prop[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
string ip = endpoint.Address;
Crédits: http://blogs.msdn.com/phenning/archive/2007/08/08/remoteendpointmessageproperty-in-wcf-net-3-5.aspx