web-dev-qa-db-fra.com

Valeur manquante pour AzureWebJobsStorage dans le développement local local.settings.json dans Visual Studio 2017

Je développe une fonction Azure localement, avec l'émulateur de stockage et l'explorateur de stockage ouverts.

Arborescence des fichiers

File tree

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.

8
rubens.lopes

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

14
rubens.lopes

J'obtenais la même erreur lorsque j'utilisais mon Azure Function dans mon Visual Studio 2019.

enter image description here

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.

3
Sibeesh Venu

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.

0
Robb Vandaveer