https://azure.microsoft.com/en-us/blog/windows-azure-web-sites-how-application-strings-and-connection-strings-work/で説明されているように、Azure Web Apps/Web Sites/Web Jobsは、app.configファイルではなく環境変数から構成設定(appSettings、connectionString) web.config。 「APPSETTING_appSettingKey」という名前の環境変数が存在する場合ローカルで開発中のAzure Webサイト/ジョブアプリの設定を設定する
は例えば、それはapp.configを/ web.configファイルから以下の設定を上書きします:アプリケーションはAzureの中で展開されると、これは正常に動作します
<appSettings>
<add key="appSettingKey" value="defaultValue" />
</appSettings>
、私はローカルでテストするときに同じ方法を使いたいと思っています。
私は、ローカルのコマンドラインでこれをエミュレートしようとした:
> set APPSETTING_appSettingKey=overridedValue
> MyWebJob.exe
ウェブジョブが使用して、この設定にアクセスします。
ConfigurationManager.AppSettings["appSettingKey"]
のAzureで実行している場合、それは値を読み込む「overridedValue」として期待されますが、ローカルではapp.configファイルから値 "defaultValue"が読み込まれます。
これは機能すると思われますか?これはAzure環境下でのみ実装されていますか?
私は明らかにこれをエミュレートするのConfigurationManager以上の抽象化を作成することができますが、接続文字列名の代わりに、接続文字列値を必要とするコードを呼び出すときに、これは動作しないでしょう。また、環境にかかわらず同じ方法を使い、設定管理を簡素化したい。
私はこれが必要な理由3つの理由があります。
1)リスクがありますので、私は、開発効率向上環境用など、生産への接続文字列を参照するweb.configファイルを展開する考えを好きではありませんたとえば、環境変数の名前が間違っている場合(web.configの設定の名前を変更した後など)に、開発環境設定(web.config内)をプロダクション環境で使用するエラーが発生することがあります環境変数で名前を変更するのを忘れている)
2)各開発者が独自の独立したクラウドリソースを持つ開発環境をセットアップしようとしていますデータベース、...)。現在、正しいリソースを参照するために、.configファイルを手動で編集する必要があります。また、これらのファイルの変更をチェックインまたはマージする際には注意が必要です。
3)解決策は、同じ設定(メインのWebアプリケーション、Webジョブ、統合テストプロジェクトなど)を複製する必要がある複数のプロジェクトを持つことができます。これにより、更新された設定がすべてのファイルに複製されるようにするための多くの作業が発生します。
環境に依存しない.configファイルが実際の構成を持たない場合、各開発者は一度環境変数のセットを構成し、それらをソリューションのすべての部分に使用できるようにすると、これは単純化されます。
'CloudConfigurationManager'を試すことができますか? – Thomas
Azure Web Sites/Web Jobsで実行している場合、ConfigurationManagerはすでにCloudConfigurationManagerと同様の動作を実装しています。私が探しているのは、ローカルで同じ動作をする方法です(存在する場合、環境変数からweb.config設定を上書きする)。なぜ私はこれが必要なのかを説明するために質問を編集します。 – ckarras
@ckarras私が思っている問題の1つは、ローカルで使用されているアプリケーション設定を定義すると、その設定(秘密かもしれない)がAzureに展開されていることです。欲しい。 web.config変換を使用して、デプロイメント前にこれらの値を設定ファイルから削除すると便利です。 webjobs(またはapp.configを持つプロジェクト)には、SlowCheetah Nugetパッケージhttps://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.SlowCheetah-XMLTransformsが必要です。 – Howiecamp