防止web config sitecore

时间:2017-01-03 15:34:39

标签: duplicates key sitecore config

我们开发了许多不同的Web应用程序,这些应用程序最终位于同一个公共站点,并使用sitecore作为cms,它将不同的配置文件合并到一个Web配置中。不幸的是,在sitecore设置中经常会出现重复的配置。

目前:它只是加入配置文件,只留下每个重复键的最后一个定义。因此,更新其中一个配置文件并不反映合并文件中的更改,如果有另一个配置文件,该设置稍后会被处理。

预期:阻止在多个配置文件中定义1个配置。如果多个配置文件中存在重复的密钥,则它不应该以静默方式覆盖,而是抛出错误,以便我们可以对配置进行重复数据删除。

有谁知道如何防止这种情况?例如,一种覆盖执行合并的管道的方法,永远不会覆盖任何东西(或者至少在它做的时候应该警告我们)

编辑1:

为了说明配置连接作业是多么邪恶,这里有两个示例配置文件:

aaa.config:

<configuration><sitecore>
   <settings>
      <setting name="key0" value "a-value">
      <setting name="key1" value "a-value">
   </settings>
</sitecore></configuration>

zzz.config:

<configuration><sitecore>
   <settings>
      <setting name="key1" value "z-value">
      <setting name="key2" value "z-value">
   </settings>
</sitecore></configuration>

加入:

<configuration><sitecore>
   <settings>
      <setting name="key0" value "a-value">
      <setting name="key1" value "z-value">
      <setting name="key2" value "z-value">
   </settings>
</sitecore></configuration>

但不是默默地加入文件,我喜欢它抛出一个例外,说“key1”含糊不清!

2 个答案:

答案 0 :(得分:3)

没有可用的设置OOTB来防止这种情况发生,这是Sitecore中的预期和预期行为。您可以在this documentthis blog post了解有关配置修补的详细信息。

有可能提供您自己的Sitecore.Configuration.ConfigReader实施,以防止此但是 Sitecore即使在默认安装中也会使用配置补丁。防止此行为可能会导致Sitecore中断(和/或导致其他问题)。如果你沿着这条路走下去,那么请确保 target a specific custom folder

答案 1 :(得分:0)

一位同事刚刚建议的解决方案:一个非常严格的命名策略,例如为每个配置键添加项目名称和国家/地区:“Docs_NZ_UploadMaxSize”,“Loan_NL_ProductsPath”等...这样也可以防止项目中的重复键和/或国家。

下行:在现有项目中重命名/重构。

@ jammykam的回答听起来更有趣。无论如何,我会在我们站起来之后提出两种可能的解决方案,以便投票选择哪条路线(因此接受的答案)。