Web.configの外に製品アプリの設定セクションを保持する必要があります。鍵やその他の秘密情報をソースコードリポジトリ内に保持したくありません。ただし、IIS Manangerでアプリの設定を編集すると、Web.configが変更され、次の展開で上書きされます。
デプロイ時にアプリケーションに付属するWeb.configの外部でこれらの設定を保持するにはどうすればよいですか?たとえば、これは何らかの形でAzure Webサイトによって実行されます(ポータルで構成したアプリ設定はWeb.configに保存されません)。これは、FTP経由でファイルをダウンロードすることで確認できます。それはどのように行われますか?
Web.configのappSettingsノードとconnectionStringsノードの場合、これらをweb.configの外部の個別のファイルに移動できます。
Web.configには、次のものがあります。
<appSettings configSource="appsettings.config"></appSettings>
次に、新しいファイルappsettings.config:
<?xml version="1.0"?>
<appSettings>
<add key="foo" value="bar" />
</appSettings>
次に、これらの新しいファイルをデプロイしないようにし、本番サーバーと開発環境で異なるファイルを保持する必要があります。
すべてのweb.configファイルが展開プロセスから除外されています。それらを変更する必要がある場合は、ステージングサイトまたは本番サイトで変更します。
サイトのweb.configファイルに加えて、IISにはいくつかのグローバル設定があります。
%systemroot%\System32\inetsrv\config\applicationHost.config
すべてのグローバルIIS設定があり、Feature Delegation
設定に応じて、これらはローカルweb.configで上書きできます。ただし、機能を 'に設定することでこれを防ぐことができます。サーバーレベルでの機能の委任の「読み取り専用」。
Dot.NET関連の設定には、2つのグローバルファイルがあります。
%systemroot%\Microsoft.NET\Framework??\v?.?.????\CONFIG\machine.config
%systemroot%\Microsoft.NET\Framework??\v?.?.????\CONFIG\web.config
これらのファイルにはいくつかのバージョンがあり、各OSプラットフォームのフレームワークバージョンごとに1つあります。
これらのファイルで行われた設定はすべて、ローカルのweb.configに継承されます。
ただし、ローカルのweb.configがグローバルファイルに設定されている設定を上書きしないようにする方法はないと思います。