如何获取WCF远程端点的IP地址?

时间:2008-12-24 09:58:27

标签: .net wcf wcf-binding

有没有办法获取WCF连接的远程IP地址?

我想它没有内置到WCF框架中的原因是WCF可以使用非TCP / IP绑定,因此IP地址并不总是有意义。

但是,这些信息对于所有广泛使用的绑定都是有意义的(据我所知:BasicHttp,DualHttp,WSHttp和NetTcp)。

IP地址可能是使用反射访问的,但我宁愿找到一种记录的方法来获取它而不是入侵框架类。

我已经开始搜索这个问题了,似乎很多人在没有找到合适解决方案的情况下遇到了这个问题(通常的答案是to rely on the message headers,但这意味着信任客户提供其真实的IP地址,如果您出于安全原因想要记录IP地址,则不能选择此选项)

3 个答案:

答案 0 :(得分:14)

显然它已经通过RemoteEndpointMessageProperty添加到3.5;见here

答案 1 :(得分:3)

OperationContext context = OperationContext.Current;
MessageProperties properties = context.IncomingMessageProperties;
RemoteEndpointMessageProperty endpoint = properties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
string address = endpoint.Address;

答案 2 :(得分:2)

如果您在服务端并且想要获取客户端IP,则必须检查OperationContext的消息属性。 例如,查看here或h ere