You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Service Fabric应用配置新增ConfigOverride节报错:找不到同名Settings节

解决Service Fabric配置节覆盖报错:找不到同名节

我之前也碰到过一模一样的问题!这个错误的核心原因很明确:你在ApplicationManifest的ConfigOverride里定义的Blah节,在对应的服务配置包(Settings.xml)里根本不存在。Service Fabric要求,你要覆盖的配置节必须先在服务的基础配置里存在,才能在应用层面做覆盖。

问题重现

你执行Register-ServiceFabricApplicationType时收到的报错:

Register-ServiceFabricApplicationType : The Settings section with name 'Blah' in ConfigOverride 'Config' is invalid. Cannot find a section with the same name.

你的ApplicationManifest里的配置片段:

<ApplicationManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="eBenefits.OrganizationDomainType" ApplicationTypeVersion="1.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
  <Parameters>
    <Parameter Name="Parameter1" DefaultValue="" />
    <Parameter Name="Parameter2" DefaultValue="" />
    <Parameter Name="Parameter3" DefaultValue="" />
  </Parameters>
  <ConfigOverrides>
    <ConfigOverride Name="Config">
      <Settings>
        ...
        <Section Name="Blah">
          <Parameter Name="Parameter1" Value="[Parameter1]" />
          <Parameter Name="Parameter2" Value="[Parameter1]" />
          <Parameter Name="Parameter3" Value="[Parameter1]" />
        </Section>
      </Settings>
    </ConfigOverride>
  </ConfigOverrides>
  ...
</ApplicationManifest>

完整报错日志:

Copying application to image store... Upload to Image Store succeeded Registering application type... Register-ServiceFabricApplicationType : The Settings section with name 'Blah' in ConfigOverride 'Config' is invalid. Cannot find a section with the same name. FileName: C:\SfDevCluster\Data\ImageBuilderProxy\AppType\a2b68765-272d-4477-aad2-f3d4818365c7\ApplicationManifest.xml At C:\Program Files\Microsoft SDKs\Service Fabric\Tools\PSModule\ServiceFabricSDK\Publish-NewServiceFabricApplication.ps1:251 char:9 + Register-ServiceFabricApplicationType -ApplicationPathInImage ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (Microsoft.Servi...usterConnection:ClusterConnection) [Register-Servic eFabricApplicationType], FabricException + FullyQualifiedErrorId : RegisterApplicationTypeErrorId,Microsoft.ServiceFabric.Powershell.RegisterApplicationTyp e

Finished executing script 'Deploy-FabricApplication.ps1'. Time elapsed: 00:00:39.7598137 The PowerShell script failed to execute.

解决方案

按照以下步骤修复:

  1. 找到对应服务的Settings.xml
    定位到你的服务项目中,对应Config配置包的Settings.xml文件(通常在PackageRoot\Config目录下)。

  2. 在Settings.xml中添加Blah
    不管有没有默认参数,先把这个节加上,哪怕是空的也可以:

    <Settings>
      <!-- 保留已有的其他配置节 -->
      <Section Name="Blah">
        <!-- 可按需添加默认参数,也可以留空 -->
        <!-- <Parameter Name="Parameter1" Value="default-value" /> -->
      </Section>
    </Settings>
    
  3. 确认ServiceManifest引用正确的配置包
    检查对应服务的ServiceManifest.xml,确保它正确引用了这个Config包,且版本号匹配:

    <ServiceManifest Name="YourServiceName" Version="1.0.0">
      <Resources>
        <ConfigPackage Name="Config" Version="1.0.0" />
      </Resources>
      ...
    </ServiceManifest>
    
  4. 重新打包并注册应用
    重新生成你的Service Fabric应用包,然后再次执行注册和部署命令,这个错误就应该消失了。

额外排查点

  • 如果你的应用包含多个服务,要确认ConfigOverride对应的是正确服务的配置包,别误改到其他服务的Settings.xml
  • 检查配置包的版本号,ServiceManifest里的ConfigPackage版本要和实际文件的版本一致,避免集群读取旧配置
  • 若之前修改过配置包但没更新版本号,记得同步更新版本,否则可能出现缓存不生效的问题

内容的提问来源于stack exchange,提问作者spottedmahn

火山引擎 最新活动