如何:使用 Visual Studio 2019 對 Azure Service Fabric 中的 Windows 容器進行偵錯
使用 Visual Studio 2019 時,您可以在作為 Service Fabric 服務的容器中,對 .NET 應用程式進行偵錯。 本文說明如何設定環境,然後在執行於本機 Service Fabric 叢集的容器中,對 .NET 應用程式進行偵錯。
必要條件
- 在 Windows 10 上,請遵循本快速入門來設定 Windows 10 以執行 Windows 容器
- 在 Windows Server 2016 上,請遵循本快速入門來設定 Windows 2016 以執行 Windows 容器
- 遵循在 Windows 上準備您的開發環境,以設定本機 Service Fabric 環境
設定開發人員環境以對容器進行偵錯
先確定適用於 Windows 服務的 Docker 有在執行,再繼續進行下一個步驟。
為了在容器之間支援 DNS 解析,您必須使用機器名稱來設定本機開發叢集。 如果您想要透過反向 Proxy 處理服務,則也需要執行這些步驟。
以系統管理員身分開啟 PowerShell
瀏覽至 SDK 叢集的安裝程式資料夾,通常是
C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup
。執行指令碼
DevClusterSetup.ps1
C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup\DevClusterSetup.ps1
注意
您可以使用
-CreateOneNodeCluster
來設定單節點叢集。 依預設會建立五節點的本機叢集。若要深入了解 Service Fabric 中的 DNS 服務,請參閱 Azure Service Fabric 中的 DNS 服務。 若要深入了解如何從在容器中執行的服務使用 Service Fabric 反向 Proxy,請參閱針對在容器中執行的服務進行反向 Proxy 特殊處理。
在對 Service Fabric 中的容器進行偵錯時的已知限制
以下是對 Service Fabric 中的容器進行偵錯時的已知限制和可能的解決方式清單:
- 對 ClusterFQDNorIP 使用 localhost 不會在容器中支援 DNS 解析。
- 解決方式:使用機器名稱設定本機叢集 (請參閱上文)
- 在虛擬機器中執行 Windows10 不會讓 DNS 回覆返回容器。
- 解決方式:對虛擬機器 NIC 上的 IPv4 停用 UDP 總和檢查碼卸載
- 執行 Windows 10 會降低機器的網路效能。
- https://github.com/Azure/service-fabric-issues/issues/1061
- 如果使用了 Docker Compose 來部署應用程式,則無法在 Windows10 上使用 DNS 服務名稱來解析相同應用程式中的服務
- 解決方式:使用 servicename.applicationname 來解析服務端點
- https://github.com/Azure/service-fabric-issues/issues/1062
- 如果對 ClusterFQDNorIP 使用 IP-address,則在主機上變更主要 IP 會破壞 DNS 功能。
- 解決方式:使用主機上的新主要 IP 或使用機器名稱,來重新建立叢集。 這項破壞是故意設計的。
- 如果無法在網路上解析用來建立叢集的 FQDN,則 DNS 會失敗。
- 解決方式:使用主機的主要 IP 來重新建立本機叢集。 這項失敗是故意設計的。
- 在對容器進行偵錯時,Docker 記錄只能透過 Visual Studio 輸出視窗取得,而無法透過 Service Fabric API (包括 Service Fabric Explorer) 取得
針對在 Service Fabric 上的 Docker 容器中執行的 .NET 應用程式進行偵錯
以系統管理員身分執行 Visual Studio。
開啟現有的 .NET 應用程式,或新建一個。
以滑鼠右鍵按一下專案,然後選取 [新增] -> [容器協調器支援] -> [Service Fabric]
按 F5 開始對應用程式進行偵錯。
Visual Studio 支援適用於 .NET 和 .NET Core 的主控台與 ASP.NET 專案類型。
下一步
若要深入了解 Service Fabric 和容器的功能,請跟隨此連結,請參閱 Service Fabric 容器概觀。