【问题标题】:Service Fabric hosted Web APIService Fabric 托管的 Web API
【发布时间】:2016-05-29 09:03:00
【问题描述】:

我创建了一个简单的 Stateful Actor 和一个 Web API(自托管)并将其部署到 Azure。它工作正常,我可以在 Service Fabric Explorer 中浏览节点。

Azure 给了我一个 url,但是当我将 /api/values 添加到末尾(在本地可以正常工作)时,它会下载一个名为 values 的文件,我无法打开它,因为它是一个二进制文件。

我想从 Xamarin 应用程序调用 web api(即正常的 Rest api 调用),但如果我不能通过浏览器调用它,我有点卡住了。

【问题讨论】:

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


    【解决方案1】:

    我会在Stephen's answer 上对此发表评论,但我缺乏足够的声誉。 要向负载均衡器添加自定义端口创建 Service Fabric 集群后,您可以(在较新的 Azure 门户中):

    • 导航到您的 Service Fabric 集群的负载平衡器资源。
    • 在“设置”下找到“负载平衡规则”选项。
      • 这将至少有两条规则,如果您在集群设置期间设置了自定义规则,则更多。
    • 添加新规则。
      • 给它一个名字
      • “端口”是您要访问的外部端口。
      • “BackendPort”是您的服务配置为侦听的端口。
      • 其他设置的默认设置在紧要关头工作。

    请注意,如果您要启用多个端口,则它们每个都需要自己的规则。

    我知道以上内容在我的“hello world”沙盒项目中有效。

    我自己正在攀登 Service Fabric 学习曲线,因此我无法对其他设置发表权威评论。

    【讨论】:

    • 谢谢你。
    【解决方案2】:

    发现了缺失的东西。

    https://azure.microsoft.com/en-us/documentation/articles/service-fabric-cluster-creation-via-portal/

    此处的此链接将介绍如何在 Azure 上创建 Service Fabric 应用程序,特别是“应用程序输入终结点”字段需要具有您要使用的端口。对于示例,它们大多是端口 80 或 8081。

    之后应该有一种添加这些端口的方法,我尝试过(微软支持工程师也尝试过),但似乎没有用。您应该能够将这些端口添加到与 Service Fabric 应用程序关联的负载均衡器。

    我像以前一样重新创建了我的 Service Fabric 应用程序,但这次在节点类型部分填写了我想使用的端口,现在我可以访问我已部署的 webapi 服务。这个字段可以留空,这是我第一次做的,也是我遇到问题的原因。

    【讨论】:

      【解决方案3】:

      与 Service Fabric 没有真正的关系,它只是在 Web API 中设置 HTTP 响应标头的方式。建议使用asp.netasp.net-web-api 对此进行标记以获得更全面的答案。

      【讨论】:

      • 如果它在本地工作(即 http:\\localhost:30003\api\values),那么使用 azure fqn 和正确的端口也应该可以工作,我希望。可能有错误的端口,Azure 为服务结构列出了一些,但尝试了它们都没有帮助。必须有一种方法可以调用托管在节点中的 webapi,否则将毫无意义。
      • 系统提示您下载名为 values 的文件这一事实使我相信您实际上成功地访问了端点,但是您的浏览器没有正确解释响应的内容类型标头,正如 Vas 所建议的那样.确认一下:您是否使用相同的浏览器在本地和 Azure 中进行测试? IE 历来将 application/json 解释为可下载的内容,而不是内联渲染。
      • 是的,两者都使用 chrome。关于文件下载的好点。从那以后,我在无状态服务中尝试了一个 webapi 应用程序,并尝试了一个普通的 azure webapi。第一个给出了内部 500 错误,后者也是。无法访问日志以进行故障排除。下一步是部署其中一个示例应用程序,看看它是否有效。
      • 我拿了一个演示项目 VoiceMailBox,在本地运行它,并在 localhost:8081/voicemailbox/ 上按预期运行。部署到我在 Azure 上的 Service Fabric 站点,我可以看到它在 Service Fabric Explorer 上运行(全绿色)。尝试了 sitename.westus.cloudapp.azure.com:19080/voicemailbox/ 以及 sitename.westus.cloudapp.azure.com:8081/voicemailbox/ 和 sitename.westus.cloudapp.azure.com/voicemailbox/。没有工作。 19080 确实加载了一个空白页面,其余页面未找到。我难住了。有没有人试过这个?找不到一个例子。
      【解决方案4】:

      鉴于平台和资源还很不成熟,Azure Service Fabric Stateless Web API 周围的教程和技术资源往往有些脱节。

      This Stateless Web API tutorial,在撰写本文时,非常有效。

      作为教程的先决条件:

      1. Visual Studio 更新到最新版本(扩展和更新)
      2. Service Fabric SDK更新到最新版本(Web Platform Installer)
      3. setting up your Azure Service Fabric ClusterNode Type参数时显式指定EndPoint Port属性(在ServiceManifest.xml中定义)

      遵循这些步骤将成功地允许部署到本地和远程集群,并将公开您的 Web API 端点以供使用。

      【讨论】:

        猜你喜欢
        • 2017-03-26
        • 1970-01-01
        • 2018-11-13
        • 2016-05-20
        • 2018-07-11
        • 2016-12-07
        • 2020-01-05
        • 2018-09-05
        • 2018-01-31
        相关资源
        最近更新 更多