Service Fabric 托管 Web API

Service Fabric hosted Web API

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

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

我想从 Xamarin 应用程序调用网络 api(即正常的 Rest api 调用),但如果我无法通过浏览器调用它,我会有点卡住。

与 Service Fabric 没有真正的关系,它只是您在 Web API 中设置 HTTP 响应的方式 headers。建议用 asp.net or asp.net-web-api 标记以获得更详尽的答案。

找到了丢失的东西。

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

这里 link 介绍了如何在 Azure 上创建 Service Fabric 应用程序,特别是字段 "Application input endpoints" 需要有您要使用的端口。对于示例,它们主要是端口 80 或 8081。

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

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

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 Cluster Node Type 参数
  4. 时明确指定 EndPoint Port 属性(在 ServiceManifest.xml 中定义)

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

我会在 上发表评论,但我缺乏足够的声誉。 要在 创建服务结构集群后 添加自定义端口到负载均衡器,您可以(在较新的 Azure 门户中):

  • 导航到服务结构集群的负载均衡器资源。
  • 在 "Settings" 下找到 "Load balancing rules" 选项。
    • 这将至少有两条规则,如果您在集群设置期间设置了自定义规则,则更多。
  • 添加新规则。
    • 给它起个名字
    • 'Port' 是您要访问的外部端口。
    • 'BackendPort' 是您的服务配置为侦听的端口。
    • 其他设置的默认值在紧要关头起作用。

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

我知道以上内容在我的 'hello world' 沙箱项目中有效。

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