操作说明:使用 Visual Studio 2019 在 Azure Service Fabric 中调试 Windows 容器

借助 Visual Studio 2019,可以将容器中的 .NET 应用程序作为 Service Fabric 服务进行调试。 本文介绍如何配置环境,然后调试在本地 Service Fabric 群集中运行的容器中的 .NET 应用程序。

先决条件

配置开发人员环境以调试容器

  1. 确保 Docker for Window 服务正在运行,然后再继续进行下一步。

  2. 为了支持容器之间的 DNS 解析,必须使用计算机名称来设置本地开发群集。 如果要通过反向代理寻址服务,则还需要执行这些步骤。

    1. 以管理员身份打开 PowerShell

    2. 导航到 SDK 群集安装文件夹,通常为 C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup

    3. 运行脚本 DevClusterSetup.ps1

        C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup\DevClusterSetup.ps1
      

      注意

      可以使用 -CreateOneNodeCluster 来设置单节点群集。 默认情况下将创建一个本地五节点群集。

      若要详细了解 Service Fabric 中的 DNS 服务,请参阅 Azure Service Fabric 中的 DNS 服务。 如需深入了解从容器中运行的服务使用 Service Fabric 反向代理,请参阅对容器中运行的服务的反向代理特殊处理

在 Service Fabric 中调试容器时的已知限制

下面列出了在 Service Fabric 中调试容器时的已知限制以及可能的解决方法:

  • 针对 ClusterFQDNorIP 使用 localhost 时不支持容器中的 DNS 解析。
    • 解决方法:使用计算机名称设置本地群集(请参阅上文)
  • 在虚拟机中运行 Windows10 时不会向容器返回 DNS 回复。
  • 如果使用 Docker Compose 部署应用程序,则无法在 Windows10 中使用 DNS 服务名称解析相同应用程序中的服务
  • 如果针对 ClusterFQDNorIP 使用 IP-address,则更改主机上的主 IP 将破坏 DNS 功能。
    • 解决方法:使用主机上新的主 IP 重新创建群集或使用计算机名称。 此破坏是设计使然。
  • 如果无法在网络上解析创建群集时使用的 FQDN,则 DNS 将失败。
    • 解决方法:使用主机的主 IP 重新创建本地群集。 此失败是设计使然。
  • 调试容器时,docker 日志只能在 Visual Studio 输出窗口中使用,而不能通过 Service Fabric API(包括 Service Fabric Explorer)使用

调试在 Service Fabric 上的 docker 容器中运行的 .NET 应用程序

  1. 以管理员身份运行 Visual Studio。

  2. 打开现有的 .NET 应用程序或新建一个 .NET 应用程序。

  3. 右键单击项目并选择“添加”->“容器业务流程协调程序支持”->“Service Fabric”

  4. F5 开始调试应用程序。

    Visual Studio 支持 .NET 和 .NET Core 的控制台和 ASP.NET 项目类型。

后续步骤

若要详细了解 Service Fabric 和容器的功能,请参阅 Service Fabric 容器概述