Aparentemente, puede obtener fácilmente una dirección IP de cliente en WCF 3.5 pero no en WCF 3.0. Alguien sabe como?
82
Esto no le ayuda en 3.0, pero puedo ver que la gente encuentra esta pregunta y se siente frustrada porque están tratando de obtener la dirección IP del cliente en 3.5. Entonces, aquí hay un código que debería funcionar:
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;
Resulta que puede, siempre que (a) su servicio esté alojado en un servicio web (obviamente) y (b) habilite el modo AspNetCompatibility, de la siguiente manera:
<system.serviceModel> <!-- this enables WCF services to access ASP.Net http context --> <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> ... </system.serviceModel>
Y luego puede obtener la dirección IP mediante:
HttpContext.Current.Request.UserHostAddress
fuente
HttpContext.Current.Request.UserHostAddress
Puede hacerlo si su objetivo es .NET 3.0 SP1.
OperationContext context = OperationContext.Current; MessageProperties prop = context.IncomingMessageProperties; RemoteEndpointMessageProperty endpoint = prop[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty; string ip = endpoint.Address;
Créditos: http://blogs.msdn.com/phenning/archive/2007/08/08/remoteendpointmessageproperty-in-wcf-net-3-5.aspx
Referencia: http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.remoteendpointmessageproperty.aspx
fuente