我试图让无状态服务向另一个发送值,只是为了通过使用服务结构中的DNS服务来实现服务之间的通信。我已经用邮递员测试了这两个应用程序,并且它们运行良好。我跟随this tutorial,这似乎很简单。
无状态服务具有DNS名称: DNS名称在ApplicationManifest.xml
中配置<Service Name="SocketService"
ServiceDnsName="SocketService.TimeSeriesActorApplication"
ServicePackageActivationMode="ExclusiveProcess">
<StatelessService ServiceTypeName="SocketServiceType"
InstanceCount="[SocketService_InstanceCount]">
<SingletonPartition />
</StatelessService>
</Service>
然后我尝试将http get发送到服务,就像在教程中一样。
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://socketservice.timeseriesactorapplication:8712/api/");
var response = await client.GetAsync("values");
}
但我得到一个例外:
WebException:无法解析远程名称:&#39; socketservice.timeseriesactorapplication&#39;
当我使用端口8080(如教程建议)和使用我在ServiceManifest.xml中指定的端口时,会发生这种情况。
<Endpoints>
<Endpoint Protocol="http" Name="ServiceEndpoint" Type="Input" Port="8712" />
</Endpoints>
我在这里缺少什么?
更新 使用localhost而不是dns-name也可以正常工作。
答案 0 :(得分:0)
我看到你正在运行service fabric 5.6.210。最近的5.6.220版本(https://blogs.msdn.microsoft.com/azureservicefabric/2017/06/20/release-of-sdk-2-6-220-and-runtime-5-6-220-refresh-for-windows/)包含一些DNS服务修复程序。请注意,即使我正在运行5.6.220,我注意到在我的本地计算机上部署后,DNS名称解析似乎并不总是立即开始工作(我必须重新部署或等待几分钟)。如果您在本地运行,则可以在终端窗口中测试名称解析 - 只需ping服务的DNS名称。
答案 1 :(得分:0)
我通过使用ipconfig / flushdns刷新DNS来修复它。 我还发现本地IP是我的DNS链中的第一台DNS服务器。