通过不同端口上的 HAPRoxy 服务器转发 WCF 流量时出现 AddressFilter 不匹配

Getting an AddressFilter Mismatch When Forwarding WCF Traffic Through an HAPRoxy Server on a Different Port

我的客户端应用程序通过端口 8080 上的 HAProxy 服务器进行 WCF 调用,然后将流量转发到端口 770 上的应用程序服务器,这是应用程序服务器期望的端口。但是,WCF 正在检测端口 8080 与 770 的不匹配并报告以下错误:

由于 EndpointDispatcher 的 AddressFilter 不匹配,接收方无法处理带有 To 'net.tcp://172.31.31.219:8080/MyEndpoint' 的消息。检查发送方和接收方的 EndpointAddresses 是否一致。

我如何支持这种情况?如果我更新客户端以在端口 770 上发送流量,一切正常,但这是我想要支持不同端口的特殊情况。

I want to support different ports.

也许你可以在服务上配置多个端点并实现客户端与每个端点的通信,你可以查看教程。
https://docs.microsoft.com/en-us/dotnet/framework/wcf/samples/multiple-endpoints

The message with To 'net.tcp://172.31.31.219:8080/MyEndpoint' cannot be processed at the receiver, due to an AddressFilter mismatch at the EndpointDispatcher. Check that the sender and receiver's EndpointAddresses agree.

您可以查看 this post 以了解此错误的解决方案。
如果服务只有一个端点,一种快速的解决方法是使用

[ServiceBehavior(AddressFilterMode=AddressFilterMode.Any)]

这将关闭地址过滤器。
或者在 SOAP header 中包含以下内容以访问 Web 服务:

<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsa:To>http://example.com/service</wsa:To>
</soap:title>