是否可以从 WCF 客户端获取负载均衡器后面的服务 IP?

Is it possible from WCF client to get the service IP behind a load balancer?

我知道一些从 WCF 服务获取客户端 IP 的方法,但我无法获取服务器 IP。

我可以对服务进行一些更改,因此它可以 return IP 地址,但我正在尝试在不修改服务的情况下执行此操作。

我的场景: 我通过 dns 调用服务,它在负载平衡中运行(例如 services.company.com,解析为 192.168.0.1),所以我不知道哪个服务器正在响应请求(192.168.0.10 或 192.168.0.11)。

出于日志目的,我想知道哪个服务器处理了我的请求。

我认为这可能是不可能的,但谁知道谁能帮助我或提供线索?

正如我所想,我找不到任何方法在不在服务器端进行更改的情况下从服务器获取 IP。 但我试图在不修改所有服务的情况下达到目标,我最终采用了这种方法:

https://www.iis.net/configreference/system.webserver/httpprotocol/customheaders

我向我的 IIS 服务器添加了一个 自定义 header,因此当我使用服务时,服务器会向 header 添加一个值,即我可以在客户端恢复。 基本上您可以在 IIS 管理器中添加自定义 header,或者您可以添加到配置文件,将这些行添加到 system.webServer 节点:

<httpProtocol>
    <customHeaders>
        <add name="X-ServerName" value="myServerNameOrIP" />
    </customHeaders>
</httpProtocol>

它可以在服务器级别或特定于某些应用程序上完成。这解决了问题。

当然,我只是把它放在内部服务器上,我不希望我的外部客户端收到这些信息。