显然,您可以轻松地在WCF 3.5中获取客户端IP地址,但不能在WCF 3.0中获取.谁知道怎么样?
这对3.0没有帮助,但我可以看到人们发现这个问题而感到沮丧,因为他们试图在3.5中获取客户端IP地址.所以,这里有一些应该工作的代码:
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;
事实证明,只要(a)您的服务托管在Web服务中(显然)和(b)您启用AspNetCompatibility模式,如下所示:
...
然后你可以通过以下方式获得IP地址:
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
参考:http: //msdn.microsoft.com/en-us/library/system.servicemodel.channels.remoteendpointmessageproperty.aspx