如何从WCF服务应用程序中获取客户端地址?

5

如何从WCF服务应用程序获取客户端地址?此外,当客户端连接时是否会触发事件,可能包含地址信息?

5个回答

7

2

您是在寻找哪个地址?IP地址吗?

如果是这样,我希望您了解到它的局限性——如果客户端位于NAT设备或互联网代理的另一侧,它将不会很精确。


我并不了解这些限制,但对于我的应用程序来说,NAT和代理将不是问题。我希望能获得一个IP地址,甚至是Windows PC的名称。 - MGSoto
好的,还有一件事需要考虑:如果网络拓扑结构发生变化,他们会先咨询你,还是“网络”人员会认为他们可以在未经“编程”人员许可的情况下更改网络?因为这通常是如何运作的,也是应该如此运作的。 - John Saunders
如果拓扑结构发生变化,只需要修改一两个配置文件就可以了。但归根结底,这个程序始终在本地网络上运行。 - MGSoto
不是这样的。有几种网络设备可以放置在您和那些计算机之间,这将防止您看到它们的IP地址。另一件事是,任何一个这些计算机都可能更改其IP地址或添加第二个网络卡。总的来说,像您这样的应用程序层无需依赖于网络层实体,例如IP地址。 - John Saunders

2
如果System.Web.HttpContext.Current.Request.UserHostAddress不为空,则它包含远程地址。但这可能是代理或负载均衡器(我们生产环境中的情况)。

1

如果WCF主机提供了一种获取服务请求方IP的方法,那么这将会更容易 - 这样你就可以调用该方法来获取原始请求方。


0
您可以使用类似以下的代码:OperationContext.Current.IncomingMessageHeaders.To.Host

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接