应用程序清单参数未覆盖Service Fabric应用程序设置



需要一些帮助来理解为什么服务结构应用程序的配置设置没有像预期的那样被应用程序清单中定义的值覆盖。目前,我为我的两个不同环境定义了一些设置:默认设置是针对最终Azure集群的,我有一个针对本地开发集群的自定义发布配置文件。

下面是我为每个文件所做的:

SampleServFabricApp/ApplicationPackageRoot/ApplicationManifest.xml

<ApplicationManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="SampleServFabricAppType" ApplicationTypeVersion="1.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Parameters>
<Parameter Name="SampleServFabricApp_MessageTransportConfig_CertificateFindValue" DefaultValue="e47c0e4b80e9b83e39e5e1dc35610b6b84a3b764" />
<Parameter Name="SampleServFabricApp_MessageTransportConfig_CertificateRemoteCommonNames" DefaultValue="*.thefinaldomain.com" />
<Parameter Name="SampleServFabricApp_MessageTransportConfig_CertificateRemoteThumbprints" DefaultValue="e47c0e4b80e9b83e39e5e1dc35610b6b84a3b764" />
<Parameter Name="SampleServFabricApp_PartitionCount" DefaultValue="10" />
<Parameter Name="SampleServFabricApp_MinReplicaSetSize" DefaultValue="3" />
<Parameter Name="SampleServFabricApp_TargetReplicaSetSize" DefaultValue="3" />
</Parameters>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="SampleServFabricApp.EndpointPkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides>
<ConfigOverride Name="Config">
<Settings>
<Section Name="SampleServFabricApp_MessageTransportConfig">
<Parameter Name="CertificateFindValue" Value="[SampleServFabricApp_MessageTransportConfig_CertificateFindValue]" />
<Parameter Name="CertificateRemoteCommonNames" Value="[SampleServFabricApp_MessageTransportConfig_CertificateRemoteCommonNames]" />
<Parameter Name="CertificateRemoteThumbprints" Value="[SampleServFabricApp_MessageTransportConfig_CertificateRemoteThumbprints]" />
</Section>
</Settings>
</ConfigOverride>
</ConfigOverrides>
</ServiceManifestImport>
<DefaultServices>
<Service Name="SampleServFabricAppActorService" GeneratedIdRef="e07529c2-2426-4065-b621-90033a78704c|Persisted">
<StatefulService ServiceTypeName="SampleServFabricAppActorServiceType" TargetReplicaSetSize="[SampleServFabricApp_TargetReplicaSetSize]" MinReplicaSetSize="[SampleServFabricApp_MinReplicaSetSize]">
<UniformInt64Partition PartitionCount="[SampleServFabricApp_PartitionCount]" LowKey="-9223372036854775808" HighKey="9223372036854775807" />
</StatefulService>
</Service>
</DefaultServices>
</ApplicationManifest>

SampleServFabricApp/ApplicationParameters/dev_cluster.xml

<?xml version="1.0" encoding="utf-8"?>
<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/SampleServFabricApp" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Parameters>
<Parameter Name="SampleServFabricApp_MessageTransportConfig_CertificateFindValue" Value="4826f9a3ac95bca949fab19ea136e197" />
<Parameter Name="SampleServFabricApp_MessageTransportConfig_CertificateRemoteCommonNames" Value="ServiceFabricDevClusterCert" />
<Parameter Name="SampleServFabricApp_MessageTransportConfig_CertificateRemoteThumbprints" Value="4826f9a3ac95bca949fab19ea136e197" />
</Parameters>
</Application>

SampleServFabricApp.Endpoint/PackageRoot/Config/Settings.xml

<?xml version="1.0" encoding="utf-8"?>
<Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Section Name="SampleServFabricApp_MessageTransportConfig">
<Parameter Name="MaxMessageSize" Value="10000000" />
<Parameter Name="SecurityCredentialsType" Value="X509" />
<Parameter Name="CertificateFindType" Value="FindByThumbprint" />
<Parameter Name="CertificateFindValue" Value="e47c0e4b80e9b83e39e5e1dc35610b6b84a3b764" />
<Parameter Name="CertificateStoreLocation" Value="LocalMachine" />
<Parameter Name="CertificateStoreName" Value="My" />
<Parameter Name="CertificateProtectionLevel" Value="EncryptAndSign" />
<Parameter Name="CertificateRemoteCommonNames" Value="*.thefinaldomain.com" />
<Parameter Name="CertificateRemoteThumbprints" Value="e47c0e4b80e9b83e39e5e1dc35610b6b84a3b764" />
</Section>
</Settings>

当将应用程序发布到本地集群时,我可以在输出中看到创建应用程序时的日志,并且参数似乎是可以的:

2>正在创建应用程序。。。2> 2>2>应用程序名称:结构:/SampleServFabricApp 2>应用程序类型名称:SampleServFabricAppType 2>应用程序类型版本:1.0.02> 应用程序参数:{"SampleServFabricApp_MessageTransportConfig_CertificateRemoveThumbprint"=2>"4826f9a3ac95bca949fab19ea136e197";2> "SampleServFabricApp_MessageTransportConfig_CertificateRemoveCommonNames"=2>"ServiceFabricDevClusterCert";2> "SampleServFabricApp_MessageTransportConfig_CertificateFindValue"=2> "4826f9a3ac95bca949fab19ea136e197";}2> 2>创建应用程序成功。

但是使用服务资源管理器,我可以看到在应用程序启动期间发生的错误,如果我检查事件日志,我可以发现以下错误:

无法将安全设置设置为{provider=SSLprotection=EncryptAndSign certType=''store='LocalMachine/My'findValue='FindByThumbprint:e47c0e4b80e9b83e39e55e1dc35610b6b84a3b764'remoteCertThumbprints='47c0e4b80e9b83e39e5e1dc35610b6b84a3b764'remoteX509Names=('*.thefinaldomain.com',颁发者=(certChainFlags=40000000 isClientRoleInEffect=falseclaimBasedClientAuthEnabled=false}:FABRIC_E_CERTIFICATE_NOT_FOUND

有些事情我已经尝试过了:-使用Service Fabric资源管理器,并确认应用程序"详细信息"选项卡下的"参数"是正确的,并且与根据"输出"窗口发送到部署脚本的参数匹配;-确认"C:\SfDevCluster\Data_App_Node_0\SampleServFabricAppType_App18\SampleServ法布ryApp.EndpointPkg.Config1.0.0"下的"Settings.xml"文件的内容与"SampleServFabricApp.Endpoint/PackageRoot/Config/Settings.xml"的内容相等;

你知道这是一个bug还是缺少了我真的看不见的东西吗?正如您所看到的,部署过程似乎采用了正确的重写值,但应用程序不起作用,事件查看器显示的是默认值,而不是部署过程中使用的值。

谢谢。

我刚刚收到了对我在GitHub上打开的问题的回复。所描述的行为似乎是已知的,它将在SDK 3.3版本中得到修复。对于所有想检查的人,你可以在这里找到问题

最新更新