web-dev-qa-db-ja.com

Visual Studio 2017のlocal.settings.jsonローカル開発のAzureWebJobsStorageの値がありません

Storage Emulatorとde Storage Explorerを開いて、Azure機能をローカルで開発しています。

ファイルツリー

File tree

local.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true"
  },
  "ConnectionStrings": {
    "PlantaoEntities": {
      "ConnectionString": "CENSORED",
      "ProviderName": "System.Data.EntityClient"
    }
  }
}

ただし、コードを実行しようとすると、次のメッセージが表示されます。

Local.settings.jsonのAzureWebJobsStorageの値がありません。これは、HTTP以外のすべてのトリガーに必要です。 「func Azure functionapp fetch-app-settings」を実行するか、local.settings.jsonで接続文字列を指定できます

再構築ソリューションの前に動作していたので、試してみるとfunc Azure functionapp fetch-app-settings <functionAppName> Azureポータル自体から情報を取得しようとします。

8
rubens.lopes

解決策は、local.settings.jsonを右クリックしてプロパティに移動し、「出力ディレクトリにコピー」を「コピーしない」から「常にコピー」に変更することでした。現在、CLIはVisual Studio 2017内から実行するときに設定を取得します。

https://github.com/Azure/azure-functions-core-tools/issues/223#issuecomment-326225219

14
rubens.lopes

Azure FunctionVisual Studio 2019を実行しているときに同じエラーが発生していました。

enter image description here

既にCopy To Output DirectoryアクションをCopy alwaysに設定していましたが、同じエラーが引き続き発生していました。問題は、Azure Function local.settings.jsonファイルがnested jsonをサポートしていないことです。この問題を追跡できます here

上記のようにlocal.settings.jsonに値がありました。

{
  "IsEncrypted": false,
  "Values": {
    "Custom": {
      "Tickets": {
        "Channels": [
          "One",
          "Two"
        ]
      }
    },
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "ServiceBusConnectionString": ""
  }
}

値の中に余分なネストされたjson(カスタム)オブジェクトがあることがわかるように、それがこのエラーを受け取った理由です。これを修正するには、configuration.jsonという新しい構成ファイルを追加し、そこにカスタム値を追加する必要がありました。

"Custom": {
      "Tickets": {
        "Channels": [
          "One",
          "Two"
        ]
      }
    }

修正するには、ConfigurationBuilderを使用するか、File.ReadAllTextを使用してそのファイルを読み取ります。 JSONオブジェクトの代わりに、local.settings.jsonにJSON全体をプレーンな文字列として追加することもできます。

それが役に立てば幸い。

3
Sibeesh Venu

JSONがネストされておらず、<ItemGroup>値が正しい場合、これが役立つ場合があります。 local.settings.jsonは無視され、ファイルシステムを使用してコピーしましたが、Visual Studio for Macがソリューションエクスプローラーでそれを表示していましたが、何を変更してもピックアップされなかったようです<CopyToOutputDirectory>へ。ソリューションを閉じて再度開いた後、問題はなくなりました。

0
Robb Vandaveer