【发布时间】:2017-11-27 03:33:35
【问题描述】:
我试图让无状态服务向另一个服务发送值,只是为了通过使用服务结构中的 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:无法解析远程名称:'socketservice.timeseriesactorapplication'
当我按照教程建议使用端口 8080 以及使用我在 ServiceManifest.xml 中指定的端口时,都会发生这种情况。
<Endpoints>
<Endpoint Protocol="http" Name="ServiceEndpoint" Type="Input" Port="8712" />
</Endpoints>
我在这里错过了什么?
更新: 使用 localhost 而不是 dns-name 也可以。
Github 上的问题:Unable to resolve service DNS name #332
【问题讨论】:
-
刚刚完成了教程,没有任何问题。您的客户在哪里发起呼叫?
-
两者都是在本地服务结构集群中运行的无状态服务。我正在与邮递员一起向其中一个人发出 get-request,该请求再次试图通过第二个 get 请求到达另一个人。
-
当你说使用 localhost - 这也是服务到服务的通信吗?
-
是的。在服务之间进行通信时,使用 localhost 而不是我指定的 DNS 名称可以工作
-
推荐你在这里打开一个问题:github.com/Azure/service-fabric-issues/issues - 我会联系一些工程师来帮助解决你的问题。似乎没有明显的原因为什么这不起作用。
标签: c# asp.net-core azure-service-fabric