Azure AppServicesのスロットアプリケーション設定をよりよく理解する必要があります。それらが適用されるときとそれらを正しく使用する方法。
以下のように、2つのスロットを実行する2つのAppServicesをセットアップしています。
スロットのあるサイト1-ステージング
スロットのあるサイト2-建物-生産
そのため、サイトごとに、ビルドスロットの無効な接続文字列を[アプリケーション設定]ブレードに配置して、サイトにアクセスできず、基本的にazuerwebsites.netURLにエラーページが表示されるようにしたいと思います。そのスロットのために。
次に、それぞれの本番スロットに正しい接続文字列を配置して、交換すると機能するようにします。
これを確実に機能させることができません。交換しても設定が適用されません。プロダクションスロットの接続文字列をスロット設定としてマークする必要がありますか?ビルドスロットの元のスロット設定にする必要がありますか?知らない何らかのnugetパッケージをインストールする必要がありますか?.
助けてください
私の質問に対する答えは、このドキュメントにあります。 (Azureチームの誰かが出くわした場合、実際には展開スロットの構成セクションからリンクする必要があります ここ )
Windows Azure Webサイト:アプリケーション文字列と接続文字列のしくみ
簡単に言うと、.NET 4.5フレームワークを使用している場合を除き、ConfigurationManagerを使用してアプリケーション設定ブレードから設定を取得しないでください。
.NET 4.5フレームワークを使用しない場合は、代わりにEnvironment.GetEnvironmentVariable
を使用する必要があります。
私の既存の環境をAppServicesに変換しているときに、これは私をつまずかせました。私はこれを確認するように私に言うためにどこかで大きな警告が好きだっただろう。
編集:それで、これはすべての話ではありませんでした。
他の部分は、ドキュメントの「スティッキー」と「スティッキーではない」設定の意味です。設定が実際にweb.configファイルに入れられるのではなく、アプリにアクセスできるメモリ内のプロパティバッグにあるという事実への参照を見つけ続けました。この不思議なバッグの中身をどうやって見ることができるかについての参考資料は見つかりませんでしたが、それを知ってしまえば答えは明白です。
スワップ中に、ステージングスロットの設定は実際には本番スロットの設定にコピーされます。つまり、本番スロットの[アプリケーション設定]ブレードで実際に変更されます。そして、スロットのアプリケーション設定ブレードにあるものはすべて、メモリ内のプロパティバッグにあるものです。
私があなたの質問を正しく理解した場合、あなたはそれらすべてをスロット設定としてマークする必要があります。
スロット設定としてマークされたアプリ設定と接続文字列は、スワップが実行されてもスロットに残ります。スロット設定としてマークされていない設定/接続文字列は、アプリと交換されます。