Je développe une fonction Azure localement, avec l'émulateur de stockage et l'explorateur de stockage ouverts.
Arborescence des fichiers
local.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "UseDevelopmentStorage=true"
},
"ConnectionStrings": {
"PlantaoEntities": {
"ConnectionString": "CENSORED",
"ProviderName": "System.Data.EntityClient"
}
}
}
Mais un reçoit le message suivant lors de la tentative d'exécution du code:
Valeur manquante pour AzureWebJobsStorage dans local.settings.json. Ceci est requis pour tous les déclencheurs autres que HTTP. Vous pouvez exécuter 'func Azure functionapp fetch-app-settings' ou spécifier une chaîne de connexion dans local.settings.json
Cela fonctionnait avant une solution de reconstruction, et si j'essaie func Azure functionapp fetch-app-settings <functionAppName>
il essaie de récupérer les informations à partir du portail Azure lui-même.
La solution consistait à cliquer avec le bouton droit sur local.settings.json, à accéder aux propriétés, à remplacer "Copier vers le répertoire de sortie" de "Ne pas copier" par "Copier toujours". La CLI récupère maintenant les paramètres lors de l'exécution à partir de Visual Studio 2017.
https://github.com/Azure/azure-functions-core-tools/issues/223#issuecomment-326225219
J'obtenais la même erreur lorsque j'utilisais mon Azure Function
dans mon Visual Studio 2019
.
J'avais déjà réglé le Copy To Output Directory
action à Copy always
et j'obtenais toujours la même erreur. Le problème est que la fonction Azure local.settings.json
le fichier ne prend pas en charge nested json
. Vous pouvez suivre ce problème ici .
J'avais des valeurs dans local.settings.json
comme précédemment.
{
"IsEncrypted": false,
"Values": {
"Custom": {
"Tickets": {
"Channels": [
"One",
"Two"
]
}
},
"AzureWebJobsStorage": "",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"ServiceBusConnectionString": ""
}
}
Comme vous pouvez voir qu'il y a un objet json (Custom) imbriqué supplémentaire dans Values, c'est la raison pour laquelle j'obtenais cette erreur. Pour résoudre ce problème, j'ai dû ajouter un nouveau fichier de configuration appelé configuration.json
et y ajouter mes valeurs personnalisées.
"Custom": {
"Tickets": {
"Channels": [
"One",
"Two"
]
}
}
Le correctif consiste à utiliser le ConfigurationBuilder
ou à lire ce fichier à l'aide de File.ReadAllText
. Vous pouvez également ajouter l'intégralité du JSON sous forme de chaîne ordinaire dans le local.settings.json
au lieu d'un objet JSON.
J'espère que cela aide.
Pour tous ceux qui ont pu rencontrer cela et se gratter la tête parce qu'ils n'avaient pas imbriqué JSON et avaient leur <ItemGroup>
valeurs correctes, cela peut vous aider. Puisque local.settings.json
est ignoré, j'en avais copié un à l'aide du système de fichiers, et bien que Visual Studio pour Mac l'affichait dans l'Explorateur de solutions, il ne le détectait apparemment pas, peu importe ce que j'avais changé <CopyToOutputDirectory>
à. Après avoir fermé et rouvert ma solution, le problème a disparu.