教程:调试在本地开发群集中运行的 Service Fabric 网格应用程序
重要
Azure Service Fabric 网格的预览版已停用。 不允许再通过 Service Fabric 网格 API 进行新的部署。 对现有部署的支持将会持续到 2021 年 4 月 28 日。
有关详细信息,请参阅 Azure Service Fabric 网格预览版停用。
本教程是系列教程的第二部分,介绍如何生成并调试本地开发群集上的 Azure Service Fabric 网格应用。
在本教程中,将学习:
- 生成 Azure Service Fabric 网格应用程序时会发生什么情况
- 如何设置断点来观察服务到服务的调用
在此系列教程中,你会学习如何:
- 在 Visual Studio 中创建 Service Fabric 网格应用
- 调试在本地开发群集中运行的 Service Fabric 网格应用
- 部署 Service Fabric 网格应用
- 升级 Service Fabric 网格应用
- 清理 Service Fabric 网格资源
Service Fabric 网格当前为预览版。 需同意补充使用条款才可使用预览版。 在正式版 (GA) 推出之前,此功能的某些方面可能会有所更改。
先决条件
在开始学习本教程之前:
下载待办事项示例应用程序
如果在本系列教程的第一部分中未创建待办事项示例应用程序,可以下载它。 在命令窗口中,运行以下命令,将示例应用程序存储库克隆到本地计算机。
git clone https://github.com/azure-samples/service-fabric-mesh
应用程序处于 src\todolistapp
目录下。
在本地群集上生成和调试
加载项目时,会自动生成一个 Docker 映像并将其部署到本地群集。 此过程可能需要一段时间。 若要在 Visual Studio 的“输出”窗格中监视进度,请将“输出”窗格中的“显示以下来源的输出:”下拉列表值设置为“Service Fabric 工具”。
按 F5 在本地编译并运行服务。 在本地运行和调试项目后,Visual Studio 将会:
- 请确保用于 Windows 的 Docker 运行,并设置为使用 Windows 作为容器操作系统。
- 下载任何缺少的 Docker 基础映像。 此过程可能需要一段时间
- 生成(或重新生成)用于托管代码项目的 Docker 映像。
- 在本地 Service Fabric 开发群集上部署并运行容器。
- 运行服务,并命中已设置的任何断点。
完成本地部署并且 Visual Studio 运行应用后,浏览器窗口中会打开默认的示例网页。
调试提示
按照优化 Visual Studio 性能中的说明,大大加快第一次调试运行 (F5) 速度。
目前存在导致调用 using (HttpResponseMessage response = client.GetAsync("").GetAwaiter().GetResult())
无法连接到服务的问题。 只要主机 IP 地址发生变化,就会发生这种情况。 若要解决此问题:
- 从本地群集中删除应用(在 Visual Studio 中生成>清理解决方案)。
- 从 Service Fabric 本地群集管理器中,选择“停止本地群集”,然后选择“启动本地群集”。
- 重新部署应用(在 Visual Studio 中为 F5)。
如果收到“未运行任何 Service Fabric 本地群集”错误,请确保 Service Fabric 本地群集管理器 (LCM) 正在运行,然后右键单击任务栏中的 LCM 图标,并单击“启动本地群集”。 启动本地群集后,返回 Visual Studio 并按 F5。
如果启动应用时收到 404 错误,可能表示 service.yaml 中的环境变量不正确。 请确保根据创建环境变量中的说明正确设置 ApiHostPort
和 ToDoServiceName
。
如果 service.yaml 中出现生成错误,请确保使用空格而不是制表符来缩进代码行。 此外,目前必须使用英语区域设置来构建应用。
在 Visual Studio 中进行调试
在 Visual Studio 中调试 Service Fabric 网格应用程序时,使用的是本地 Service Fabric 开发群集。 若要查看如何从后端服务检索待办事项,请调试到 OnGet() 方法中。
- 在“WebFrontEnd”项目中,打开“页面”>“Index.cshtml”>“Index.cshtml.cs”,在 OnGet 方法(第 17 行)中设置一个断点。
- 在“ToDoService”项目中打开“TodoController.cs”,在 Get 方法(第 15 行)中设置一个断点。
- 返回浏览器并刷新页面。 在 Web 前端
OnGet()
方法中命中断点。 可以检查backendUrl
变量,以查看 service.yaml 文件中定义的环境变量如何合并到用于联系后端服务的 URL 中。 - 逐步执行 (F10)
client.GetAsync(backendUrl).GetAwaiter().GetResult())
调用,直到命中控制器的Get()
断点。 在此方法中,可以查看如何从内存中列表检索待办事项列表。 - 完成后,按 Shift+F5 停止在 Visual Studio 中调试项目。
后续步骤
本教程的此部分介绍了:
- 生成 Azure Service Fabric 网格应用程序时会发生什么情况
- 如何设置断点来观察服务到服务的调用
转到下一教程: