2017-01-03 8 views
0

同じ公開サイトで終了するさまざまなWebアプリケーションを開発し、異なる設定ファイルを単一のWeb設定にマージするcmsとしてsitecoreを使用します。残念ながら、サイト設定の設定に重複した設定があることがよくあります。web設定のsitecoreで重複する設定キーを防止する

現在、設定ファイルに参加するだけで、すべての重複キーの最後の定義だけが残ります。したがって、後で処理される設定を持つ別の設定ファイルがある場合、設定ファイルの1つを更新すると、マージされたファイルの変更が反映されません。

期待:複数の設定ファイルで1つの設定を定義しないようにしてください。複数の設定ファイルの中に重複したキーがある場合は、静かに上書きしてはいけませんが、エラーをスローして、設定を重複排除できるようにしてください。

誰もがこれを防ぐ方法を知っていますか?たとえば、何かを上書きしないように(またはそれがないときに、少なくともそれはそれについての私達に警告しなければならない)、マージを行うパイプラインをオーバーライドする方法

EDIT 1:

はどのように邪悪な設定を説明するために、

aaa.config:

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

zzz.config:

-joinの仕事はここで2例の設定ファイルである、です

はに参加します:

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

代わりに黙ってファイルを結合する、私は「キー1」は曖昧であると言って例外をスローするためにそれをみたいです!

+2

あなたが 'appsettings'と言うときは、configの' 'セクションを意味するのでしょうか、またはSitecoreの' 'セクションを参照していますか? – jammykam

+1

それはSitecoreの問題ではなく、あなたの設定をマージしている "他の可能性があるカスタム"ジョブです。Sitecoreは、設定の ''セクション内でのみ設定を結合します。 – jammykam

+0

@jammykamそれは本当にappsettingsではなく、 ' '内のすべてです。私は質問を更新し、何がうまくいかないかの例を含めました。これを指摘してくれてありがとう。 –

答えて

3

Sitecoreでは、これが起こらないようにOOTBを設定することはできません。設定パッチの動作の詳細については、this documentまたはthis blog postを参照してください。

このしかしサイトコアでもデフォルトで設定パッチ自体を使用していますが、インストールしないようにするSitecore.Configuration.ConfigReaderの独自の実装を提供することが可能です。この動作を防止すると、Sitecoreが壊れる(および/または他の問題を引き起こす)可能性があります。このルートを降りる場合は、のみtarget a specific custom folderを確認してください。

0

同僚がちょうど提案ソリューション:非常に厳格な命名ポリシー、例えばプロジェクト名と国とのすべての設定キー接頭辞:など「Docs_NZ_UploadMaxSize」、「Loan_NL_ProductsPathを」、...も、全体で重複キーを防ぐためだろうプロジェクトおよび

欠点:既存プロジェクトの名前変更/リファクタリング。

@ jammykamの回答はもっと楽しく聞こえる。とにかく、私は立候補した後に可能な解決法を両方持ち上げて、取るべき投票をする(したがって受け入れる答えは何か)。

関連する問題