有没有办法获取WCF连接的远程IP地址?
我想它没有内置到WCF框架中的原因是WCF可以使用非TCP / IP绑定,因此IP地址并不总是有意义。
但是,这些信息对于所有广泛使用的绑定都是有意义的(据我所知:BasicHttp,DualHttp,WSHttp和NetTcp)。
IP地址可能是使用反射访问的,但我宁愿找到一种记录的方法来获取它而不是入侵框架类。
我已经开始搜索这个问题了,似乎很多人在没有找到合适解决方案的情况下遇到了这个问题(通常的答案是to rely on the message headers,但这意味着信任客户提供其真实的IP地址,如果您出于安全原因想要记录IP地址,则不能选择此选项)
答案 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)