![](/img/trans.png)
[英]How to Get Visual Studio to Publish an Application to Service Fabric Cluster Secured by Certificate Common Name Instead of Thumbprint?
[英]How do I publish multiple instances of an application to Service Fabric cluster from Visual Studio?
我已經在Visual Studio中創建了一個無狀態服務結構應用程序,需要發布它的兩個實例。 第一個運行良好,但是當我嘗試使用第二個應用程序時,出現錯誤:
2>Application Type DevelopmentType and Version 1.0.0 was already registered with Cluster, unregistering it...
2>Unregister-ServiceFabricApplicationType : Application type and version is still in use
2>At C:\Program Files\Microsoft SDKs\Service
2>Fabric\Tools\PSModule\ServiceFabricSDK\Publish-NewServiceFabricApplication.ps1:224 char:20
2>+ $reg | Unregister-ServiceFabricApplicationType -Force
2>+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2> + CategoryInfo : InvalidOperation: (Microsoft.Servi...usterConnection:ClusterConnection) [Unregister-Serv
2> iceFabricApplicationType], FabricException
2> + FullyQualifiedErrorId : UnregisterApplicationTypeErrorId,Microsoft.ServiceFabric.Powershell.UnregisterApplicatio
2> nType
2>
2>Finished executing script 'Deploy-FabricApplication.ps1'.
我希望實例具有相同的ApplicationType,但是當我使用新的應用程序名稱和新的發布配置文件進行發布時,我只會遇到上述錯誤。
問題是您實際上是在嘗試用新的應用程序類型覆蓋現有的應用程序類型,但是由於現有的應用程序類型具有與之關聯的應用程序,因此會出現此錯誤。 為了“覆蓋”該應用程序類型,系統需要將其刪除並注冊新的應用程序類型。 但是無法刪除,因為它具有與之關聯的現有應用程序。 因此,這就是您收到此錯誤的原因。
關於應用程序類型和應用程序之間差異的一些背景知識。 這有點像編程中類和實例之間的區別。 應用類型表示應用可以是什么。 它包含代碼,配置和數據。 但是,應用程序類型只是一個定義; 它不是正在運行的應用程序。 創建應用程序時,將其創建為基於應用程序類型。 現在您有了一個正在運行的應用程序。 就像編程類比一樣,您可以從一種應用程序類型創建多個應用程序,這就是您要嘗試做的。
當您從VS進行部署時,您並不打算要從群集上的現有應用程序類型創建新應用程序。 假設您要使用您在項目中定義的代碼來部署應用程序。 由於VS不知道該代碼與集群上的代碼有何不同,因此它會繼續嘗試刪除任何沖突的應用程序類型(名稱和版本相同的應用程序類型),以便使用以下代碼注冊新的應用程序類型:已包含在您的項目中。 那就是您遇到錯誤的時候。
那么您如何解決呢? 如果您的意圖實際上是根據現有應用程序類型創建另一個應用程序,而這兩個應用程序之間沒有任何代碼差異,那么您將需要直接從PowerShell處理而不使用VS。 您正在嘗試做的只是集群的基本管理。 您將要使用New-ServiceFabricApplication
PowerShell cmdlet(請參閱https://docs.microsoft.com/zh-cn/powershell/servicefabric/vlatest/new-servicefabricapplication )。 請注意,如果您沒有正確配置應用程序,則可能會在兩個應用程序之間發生端口沖突。 為避免這種情況,您需要在應用清單中對端口進行參數化,以便在調用New-ServiceFabricApplication
時可以提供不同的端口值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.