【问题标题】:Obtaining the server IP address in WCF?在 WCF 中获取服务器 IP 地址?
【发布时间】:2010-03-09 13:59:36
【问题描述】:

当请求有多个 IP 地址时,如何获取用于请求的服务器地址

例如

  • 服务器的地址为 10.0.0.1 和 10.0.0.2。
  • 在处理请求时,服务器服务需要知道客户端是使用 10.0.0.1 还是 10.0.0.2 来连接它。

目前我只发现

  • OperationContext.Current.EndpointDispatcher.EndpointAddressOperationContext.Current.Channel.LocalAddress 包含来自 .config 的地址(例如 localhost)

  • OperationContext.Current.IncomingMessageProperties.Via 包含客户端用于连接服务器的 URL(但这可能只是客户端主机文件中的名称)。

编辑:仍在寻找解决方案...

【问题讨论】:

  • 你是指传入的客户端吗?
  • 不,我需要服务器的 IP。例如。服务器有 10.0.0.1 和 10.0.0.2 - 客户端使用什么地址连接到服务器?
  • 这是在负载均衡的情况下吗?此服务器中是否有多个网络适配器?
  • 两者都是。该服务具有一些不能通过 NLB 调用的维护功能。因为我无法绑定到特定的适配器(请参阅stackoverflow.com/questions/2326122/…),所以我试图在服务中处理这个问题。

标签: .net wcf


【解决方案1】:

如果没有您的任何额外帮助和工作,我认为您无法得到这个。

客户端向 URL 发送消息 - 消息被序列化、发送、处理和发回。没有您可以查询的“固定连接”,服务器不会告诉您任何事情。

您可以做的是创建一个可以在服务器端注册的 Message Inspector 扩展,并将服务器的本地 IP 写入一个标头字段,然后您可以在客户端进行检查。

Google 或 Bing 搜索“WCF Message Inspectors”,您应该会发现不少热门 - 其中一些比较好:

【讨论】:

  • 抱歉,我的问题不够清楚 - 我需要服务器上的信息。请查看我的编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-13
  • 2021-05-14
  • 2013-05-18
  • 2010-09-22
  • 1970-01-01
  • 2013-05-08
相关资源
最近更新 更多