在Service Fabric中公开Web API

时间:2016-05-29 01:27:24

标签: asp.net-web-api azure-service-fabric

我无法访问已部署到Service Fabric群集的Web Api。我已经按照新的无状态Web Api模板添加了下面的http端点。我还对OwinCommunication进行了修改,如图所示here

<Resources>
   <Endpoints>
     <Endpoint Name="ServiceEndpoint" Type="Input" Protocol="http" Port="8080" />
   </Endpoints>
</Resources>

创建群集时,我在节点类型中添加了80的自定义端点。

我的群集的客户端连接端点是: mycluster.eastus.cloudapp.azure.com:19000

此外,我有一个负载平衡规则,通过TCP将端口80映射到后端端口8080。关联的探测器在端口80上,我已经尝试了两种协议(http和tcp),但似乎都不起作用。

在本地,我可以通过调用http://localhost:8080/health/ping访问我的Web Api上的端点,然后返回“pong”。当我尝试在服务结构群集中访问它时,会下载一个文件。我用来在云中访问它的URL是http://mycluster.eastus.cloudapp.azure.com:19000/health/ping。我尝试了其他端口(19080,80,8080),但他们要么挂起,要么给我一个400.

关于在服务架构集群中公开Web Api的问题是:

  1. 探针应该是http还是tcp?
  2. 探测后端端口是否应设置为web api端口(例如8080)?
  3. 我的网址/端口是否可以访问我的api?
  4. 为什么要下载二进制文件?这种情况发生在所有浏览器中,并且内容显示在postman和fiddler中。

2 个答案:

答案 0 :(得分:2)

在一些启发式方法之后找到了我的问题的答案。如果我的Web Api端点设置为端口8080,那么我需要以下内容:

  1. 探测TCP上的端口8080
  2. 端口80和后端端口8080
  3. 的负载平衡规则
  4. 通过以下网址访问网络Api:http://mycluster.eastus.cloudapp.azure.com/health/ping
  5. 至于#4,这仍然是一个谜。

答案 1 :(得分:0)

http://mycluster.eastus.cloudapp.azure.com:19000/health/ping

这是错误的。

应为http://mycluster.eastus.cloudapp.azure.com:8080/health/ping

至少这是文档所说的。因此,它应该在不接触负载均衡器的情况下工作。