Storage Emulatorとde Storage Explorerを開いて、Azure機能をローカルで開発しています。
ファイルツリー
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ポータル自体から情報を取得しようとします。
解決策は、local.settings.jsonを右クリックしてプロパティに移動し、「出力ディレクトリにコピー」を「コピーしない」から「常にコピー」に変更することでした。現在、CLIはVisual Studio 2017内から実行するときに設定を取得します。
https://github.com/Azure/azure-functions-core-tools/issues/223#issuecomment-326225219
Azure Function
でVisual Studio 2019
を実行しているときに同じエラーが発生していました。
既に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全体をプレーンな文字列として追加することもできます。
それが役に立てば幸い。
JSONがネストされておらず、<ItemGroup>
値が正しい場合、これが役立つ場合があります。 local.settings.json
は無視され、ファイルシステムを使用してコピーしましたが、Visual Studio for Macがソリューションエクスプローラーでそれを表示していましたが、何を変更してもピックアップされなかったようです<CopyToOutputDirectory>
へ。ソリューションを閉じて再度開いた後、問題はなくなりました。