如何使用带有动态端口的 Service Fabric DNS 服务?

How to use Service Fabric DNS service with dynamic ports?

我无法从托管在 Service Fabric 上并配置为使用动态端口的服务调用 API。我引用 docs 来设置内部 DNS 服务并在 ApplicationManifest.xml

中将其命名如下
<Service Name="Data" ServiceDnsName="services.data">

我尝试按如下方式调用 API:

using (var client = new HttpClient())
{
    var response1 = await client.GetAsync("https://services.data/api/v1/countries"); // throws exception
    var response2 = await client.GetAsync("https://services.data:30006/api/v1/countries"); // works
}

但我观察到除非在 Uri 中明确提供端口值,否则它不起作用。

DNS 的概念是将人类可读的字符串转换为 IP。

例如:

给定域 www.mydomain.com,DNS 调用将其转换为 IP 192.168.0.1,您的请求将发送到该 IP。

如果您希望客户端连接到除 80(http) 以外的任何端口,您必须发出 www.mydomain.com:81 的请求,该请求将被转换为 192.168.0.1:81

在 Service Fabric DNS 上应用相同的逻辑。

鉴于服务:service1 application1。 DNS 条目将为:service1.application1 IP 解析将重定向到:The node IP

如果您的服务不在端口 80 上侦听请求,则客户端必须提供您的服务正在侦听的端口。

如果您打算使用动态分配的端口,我建议您使用 reverse proxy or using remoting