我无法从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中明确提供了端口值,否则它不起作用。
答案 0 :(得分:2)
DNS的概念是将人类可读的字符串转换为IP。
例如:
鉴于域www.mydomain.com
,DNS调用会将其转换为您的请求将发送到的IP 192.168.0.1
。
如果您希望客户端连接80(http)以外的任何端口,则必须提出www.mydomain.com:81
的请求,该请求将转换为192.168.0.1:81
在服务结构DNS上应用相同的逻辑。
鉴于service1
上的服务application1
。
DNS条目将是:service1.application1
IP解析将重定向到:The node IP
如果您的服务未在端口80上侦听请求,则客户端必须提供您的服务正在侦听的端口。
如果您打算使用动态分配的端口,我建议您使用reverse proxy或使用remoting