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

.net 如何获取WCF远程端点的IP地址?,.net,wcf,wcf-binding,.net,Wcf,Wcf Binding,有没有办法获取WCF连接的远程IP地址 我想它没有内置到WCF框架中的原因是WCF可以使用非TCP/IP绑定,因此IP地址并不总是有意义的 然而,这些信息对于所有广泛使用的绑定都是有意义的(据我所知:BasicHttp、DualHttp、WSHttp和NetTcp) IP地址可能可以通过反射来访问,但我更愿意找到一种有文档记录的方法来获取它,而不是侵入框架类 我在谷歌上搜索过这个问题,似乎很多人都在没有找到合适的解决方案的情况下遇到了这个问题(通常的答案是,但这意味着信任客户机提供其真实的IP地

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

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

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

IP地址可能可以通过反射来访问,但我更愿意找到一种有文档记录的方法来获取它,而不是侵入框架类


我在谷歌上搜索过这个问题,似乎很多人都在没有找到合适的解决方案的情况下遇到了这个问题(通常的答案是,但这意味着信任客户机提供其真实的IP地址,如果出于安全原因想记录IP地址,这不是一个选项)

如果你在服务端,想获得客户机IP,您必须检查OperationContext的消息属性。
例如,look或h

显然它已添加到3.5 via中;请参阅。

如果我没有弄错的话,这意味着信任客户机(请参阅第一篇链接帖子的结尾:“我们不会进行任何类型的欺骗检测,所以请小心使用IP进行任何类型的安全决策。”)我宁愿访问我自己的套接字并检索它连接的IP地址。帖子说这可能是欺骗,但我不知道他们是在谈论经典的IP欺骗(使用syn/acks),还是说这些信息是由远程wcf应用程序提供的。我认为是前者,因为我们得到的地址是代理/中继地址。有什么提示吗?这个示例生成IPv6格式的IP-有人知道如何将其转换为IPv4地址吗?@Luke这个示例最适合我。谢谢
OperationContext context = OperationContext.Current;
MessageProperties properties = context.IncomingMessageProperties;
RemoteEndpointMessageProperty endpoint = properties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
string address = endpoint.Address;