【问题标题】:Find IP/Name of client connected to WCF service?查找连接到 WCF 服务的客户端的 IP/名称?
【发布时间】:2012-03-30 07:12:57
【问题描述】:

嗨,

我有一个托管在 IIS7 中的 WCF 服务,它使用 WAS 通过 TCP 进行通信。在服务端,我实现了 IParameterInspector 来记录被调用的服务操作,但我还需要客户端 IP/名称。

我试过了:

OperationContext.Current.IncomingMessageProperties[RemoteEndpointMessageProperty.Name].Address

但这总是会返回 "::1" 吗?如果我使用:

Dns.GetHostEntry(messageProperty.Address).HostName.Split('.').LastOrDefault()

名称将始终是本地名称,即使客户端在不同的计算机上也是如此,然后是服务?

致以最诚挚的问候

编辑 1:如果我没看错,就无法获得 IP,那么问题是是否有任何其他方式来指定客户端,可能是某种 GUID,还是我应该使用的唯一会话 ID?

【问题讨论】:

  • 您似乎编写了代码以通过复杂的方式获取本地地址。
  • 是的,看起来是这样,问题是我如何获得客户端 IP?有可能吗?

标签: c# .net wcf iis was


【解决方案1】:

您可能会收到一个IPv6 地址(就像您在此处看到的那样)。 ::1 是 IPv6 等效于 IPv4 上的 127.0.0.1

此外,并非所有 IP 地址都有与之关联的主机名,有些可能没有任何句点(例如,如果您获得 'localhost' 或另一个本地 LAN 机器名)

【讨论】:

  • 我可能只使用客户端的 IP(IPV4) 地址,但我确信远程客户端不在我提供服务的本地计算机上。那么如何在 IParameterInspector 中找出客户端 IP/域名呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-11
  • 1970-01-01
  • 2021-03-21
  • 2010-12-22
  • 2010-10-28
  • 1970-01-01
相关资源
最近更新 更多