【发布时间】:2026-02-05 05:20:05
【问题描述】:
我们正在开发要安装在客户端系统上的 Windows 服务。此应用程序定期调用我们服务器上的 SOAP Web 服务。我们希望在每次访问我们的服务时将客户端系统的本地 IP 地址包含在 SOAP 请求中以进行故障排除。浏览此处的其他帖子,我发现以下代码可以获取系统上接口的 IP 列表:
IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());
此代码包含在 Windows 服务中。是否有一种简单的方法来确定此数组中的哪个 IP 分配给路由 Web 服务调用的接口?
【问题讨论】:
-
并非如此——路由是在构建请求之后发生的。您可以做的最好的事情是在服务器端捕获请求来自的 IP,但根据路由/NAT,您可能看不到发起者的 IP。
-
@Joe,谢谢。因此,如果我使用 HttpWebRequest 对象来访问服务,是否有任何方法可以获取发送请求的接口的本地 IP?本地IP确实是我们想要的。这听起来像是一个可行的选择吗——我尝试使用 Socket 类连接到端点,然后获取套接字的 LocalEndPoint。这样做是否会冒着返回错误 IP 的风险?我认为套接字连接和服务请求可能不一定通过同一接口路由。
标签: c# .net windows-services ip-address