【问题标题】:Exposing Web API in Service Fabric在 Service Fabric 中公开 Web API
【发布时间】:2016-09-27 01:58:24
【问题描述】:

我无法访问已部署到我的 Service Fabric 群集的 Web Api。我遵循了新的 Stateless 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. 我的 URL/端口对于访问我的 api 是否正确?
  4. 为什么要下载二进制文件?这发生在所有浏览器中,并且内容显示在 postman 和 fiddler 中。

【问题讨论】:

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


    【解决方案1】:

    经过多次启发,找到了我的问题的答案。如果我的 Web Api 端点设置为端口 8080,那么我需要以下内容:

    1. 探测 TCP 上的 8080 端口
    2. 使用端口 80 和后端端口 8080 的负载平衡规则
    3. 通过以下 URL 访问 Web Api:http://mycluster.eastus.cloudapp.azure.com/health/ping

    至于#4,这还是个谜。

    【讨论】:

    • 面临完全相同的问题。你有什么办法吗?
    • 真的是二进制文件吗?扩展名是什么?
    • 如果我们需要为另一个服务使用另一个端口怎么办?
    【解决方案2】:
    http://mycluster.eastus.cloudapp.azure.com:19000/health/ping
    

    这是错误的。

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

    至少这是文档所说的。所以它应该可以在不接触负载平衡器的情况下工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-26
      • 2016-12-07
      • 2019-05-06
      • 2018-07-11
      • 2016-05-29
      • 2017-04-22
      • 2016-08-17
      • 2016-09-07
      相关资源
      最近更新 更多