web-dev-qa-db-ja.com

Azure Application Settingsがappsettings.jsonファイルの値をオーバーライドしない

DefaultConnectionをappsettings.jsonファイルからAzureのアプリケーション設定に追加しようとしましたが、Azureは接続文字列を上書きしません。

enter image description here

enter image description here

私が見つけることができるすべての記事またはブログは、appsettings.jsonファイルに記載されているとおりに接続文字列名を追加するだけで、残りはAzureが行う必要があります(例 https://tehremo.wordpress。 com/2016/10/07/override-connection-strings-app-settings-in-asp-net-core-and-Azure-app-service / )ただし、アプリケーションが公開されると、ローカル接続が使用されます文字列。

Startup.csファイルは次のようになります。

enter image description hereenter image description here

注:VSTS継続的デリバリーと「Deploy Azure App Service」リリースタスクを使用して公開しています。

20
psycho

私はちょうど同様の問題を抱えていました(問題はPostgreSQLの接続文字列タイプにあったので、カスタムに変更する必要がありました)、今ではうまくいきますので、これらは次のようなものです:

  1. これは私のappsettings.jsonファイルです。 appsettings.Development.jsonで「Psql」の値を設定していますが、appsettings.jsonでは空のままです。 enter image description here
  2. これらは、Azureポータルで設定される設定です。接続文字列を上書きするには2つの方法があることに注意してください。 enter image description here
  3. これは私のStartup.csファイルの一部です。スタートアップコンストラクターで設定が適用される順序と、ConfigureServicesメソッドで接続文字列を取得する方法に注意してください(GetConnectionStringは標準の拡張メソッドです)。 enter image description here

以下の私のコメントからの追加情報:

Azure GUI(接続文字列、アプリケーション設定)は内部で環境変数を使用するため、appsettings.jsonは同じままです。

appsettings.jsonの値をVSTSのリリース中に上書きする必要がある場合(Azureに公開する前に)、ColinのALMコーナービルド&リリースツールを使用できます。 ColinのALMコーナービルドおよびリリースツール および チュートリアル へのリンクがあります。

36
pasul

@pasulに感謝します。あなたの助けは非常に高く評価され、代替ソリューションを見つけるのに役立ちました。 VSTSタスクを使用してデプロイし、アプリケーション設定を置き換えるには、リリースタスクに変数を追加し、変数置換のために問題のjsonファイルをタスクに渡す必要があります。

「Azure App Serviceのデプロイ」リリースタスクでは、「ファイル変換と変数の置換」セクションが表示されます。ここで、変数値を交換するjsonファイルへのパスを指定します。

enter image description here

次に、リリース環境のオプションボタンをクリックする必要があります。ポップアップメニューに変数を設定するオプションが表示されます。

enter image description here

ここから、変更するjsonプロパティを変数として追加できます。私の場合、接続文字列。次のようになります。

enter image description here

「ConnectionStrings.DefaultConnection」

次に、接続文字列値を入力します。 VSTSは、展開時にこれらの値を交換します。

6
psycho