1 回答
TA贡献1790条经验 获得超9个赞
我认为你的想法是最好的解决方案,通过使用 DNS.GetHostAddress 来获取服务器的实际 IP 地址。它只能由域名系统来完成。DiscoveryClient 仅返回服务器端定义的服务端点地址,该地址仅适用于控制台应用程序托管的服务。
<service name="ConsoleApp3.TestService">
<!--the below service endpoint address is returned as defined here-->
<endpoint address="http://10.157.13.69:6666" binding="wsHttpBinding" contract="ConsoleApp3.ITestService" ></endpoint>
<!--this line code will return domain-->
<!--<endpoint address="http://vabqia969vm:6666" binding="wsHttpBinding" contract="ConsoleApp3.ITestService"></endpoint>-->
<!--for exposing the service-->
<endpoint kind="discoveryEndpoint" address="http://10.157.13.69:6666/exterior" binding="wsHttpBinding" ></endpoint>
</service>
对于 IIS 中托管的服务,无论站点绑定的类型如何,都仅返回域名。这种情况下,我们就只能利用DNS了。
foreach (EndpointDiscoveryMetadata item in response.Endpoints)
{
//retrieve IP address
System.Net.IPHostEntry hostinfo = System.Net.Dns.GetHostEntry(item.Address.Uri.Host);
string IPAddress = hostinfo.AddressList[2].ToString();
Console.WriteLine(IPAddress);
}
如果有什么需要我帮忙的,请随时告诉我。
- 1 回答
- 0 关注
- 100 浏览
添加回答
举报