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

时间:2016-08-22 19:05:05

标签: c# wcf load-balancing

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

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

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

enter image description here

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

可以在服务器级别或某些应用程序中完成。这解决了这个问题。

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