如何在運行時獲取正在執行的Service Fabric服務(和應用程序)版本?我已經嘗試了上下文,但StatefulServiceContext
和StatelessServiceContext
都沒有提供該信息。在運行時獲取服務版本
回答
您可以使用FabricClient
來獲取此信息。
對於應用程序版本:
var applicationName = new Uri("fabric:/MyApp"); // or use Context.CodePackageActivationContext.ApplicationName
using (var client = new FabricClient())
{
var applications = await client.QueryManager.GetApplicationListAsync(applicationName).ConfigureAwait(false);
var version = applications[0].ApplicationTypeVersion;
}
對於服務版本 -
從服務類中:
Context.CodePackageActivationContext.GetServiceManifestVersion()
或者:
var serviceName = new Uri("fabric:/MyApp/MyService"); // or use Context.ServiceName
using (var client = new FabricClient())
{
var services = await client.QueryManager.GetServiceListAsync(applicationName, serviceName).ConfigureAwait(false);
var version = services[0].ServiceManifestVersion;
}
注:
- 在升級期間,您將獲得使用此API的舊版本。如果您需要在新版本中,使用
FabricClient.ApplicationManager.GetApplicationUpgradeProgressAsync
和retrive的TargetApplicationTypeVersion
- 你可能想,如果你經常使用它來緩存
FabricClient
(見remarks here) - 的
CodePackageActivationContext
還包含CodePackageVersion
,比服務的版本不同清單
'ServiceManifestVersion'和'CodePackageVersion'是一個很好的觀點。所以對於服務版本,爲什麼不去追求'Context.CodePackageActivationContext.GetServiceManifestVersion()'? –
錯過了那一個。我會更新我的答案。 –
@EliArbel「您可能想要緩存'FabricClient'」 - 客戶端的創建成本高嗎? –
也許我誤解了你的問題,但this.Context.CodePackageActivationContext.CodePackageVersion
呢?
要找出應用程序版本:
var fabricClient = new FabricClient();
var applicationTypeList = await fabricClient.QueryManager.GetApplicationTypeListAsync(
Context.CodePackageActivationContext.ApplicationTypeName);
var applicationType = applicationTypeList.FirstOrDefault();
var applicationVersion = applicationType?.ApplicationTypeVersion;
您可能會在此處得到不準確的結果。列表中的第一項可能不是當前實例使用的應用程序的版本。看看我的答案。 –
您也可以使用PowerShell。爲了讓應用程序類型的版本:
Get-ServiceFabricApplication -ApplicationName fabric:/MyApplication | Select -expand ApplicationTypeVersion
要使服務清單版本:
Get-ServiceFabricService -ApplicationName fabric:/MyApplication -ServiceName fabric:/MyApplication/MyStatefulService | Select -expand ServiceManifestVersion
需要基於代碼的方法。 –
- 1. 在運行時獲取jar版本
- 2. 在運行時獲取node.js版本
- 3. 獲取服務運行的時間量
- 4. 獲取在重複運行AlarmManage中運行的服務時間
- 5. 獲取Python腳本在舊版本上運行時出錯
- 6. 紅寶石版本差異正在運行的服務器時
- 7. 如何獲取在服務器上運行的git的版本號?
- 8. 如何獲取舊版API版本的運行時權限?
- 9. Android |獲取OkHTTP庫版本在運行時
- 10. Mono/MonoDevelop:在運行時獲取解決方案版本
- 11. 在運行時獲取當前的.NET CLR版本?
- 12. 如何在運行時獲取haxe編譯器版本
- 13. 如何在運行時獲取自定義功能的版本?
- 14. FileVersionInfo.GetVersionInfo獲取舊版本的exe在運行時交換
- 15. 在運行時從linux內核模塊獲取內核版本
- 16. 如何在運行時獲取軟件包名稱/版本
- 17. 可可:獲取達爾文的版本在運行時
- 18. 在運行時獲取Grails插件版本
- 19. 在運行時獲取已安裝的依賴項版本
- 20. 如何在運行時獲取最小sdk版本(minSdkVersion)?
- 21. 獲取Python腳本在HTTP簡單的服務器運行
- 22. 如何在運行時獲取服務器域名?
- 23. 如何在運行時獲取Windows服務的名稱?
- 24. 獲取當前運行版本的PHP版本
- 25. 獲取服務器API版本時Docker錯誤
- 26. 運行npm版本時,在預翻版任務上使用該新版本
- 27. 如何在運行時獲取組裝路徑,在web服務器,服務或win應用程序中運行
- 28. 如何獲取託管程序集的運行時版本
- 29. 何處獲取最新運行時(MicrosoftAzureServiceFabric.cab版本5.5.216.0)
- 30. c#從程序集中獲取框架/運行時版本
你想獲得的部署ASF或只是服務/應用程序當前的所有服務/應用程序的列表代碼在內部執行? –
在當前之內。下面的答案總結了它。爲應用程序必須查詢。 –