如何使用带有动态端口的 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
我无法从托管在 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