![](/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.