2 votes

Liaison de sortie et génération de function.json

J'essaie de créer une fonction Azure qui va sortir dans un tableau. J'utilise l'Azure Function App, et donc, d'après ce que je comprends actuellement, le fichier function.json est généré pour moi par le SDK. Ma définition de fonction est la suivante :

public static HttpResponseMessage Run(
        [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)]HttpRequestMessage req, 
        TraceWriter log,
        [StorageAccount("table_storage")] ICollector<TableItem> outputTable)

J'ai défini TableItem comme une classe qui hérite de TableEntity. Lorsque je déploie cette classe et que je regarde le fichier function.json généré, il ne mentionne pas la liaison des paramètres de sortie :

{
  "generatedBy": "Microsoft.NET.Sdk.Functions.Generator-1.0.7",
  "configurationSource": "attributes",
  "bindings": [
    {
      "type": "httpTrigger",
      "methods": [
        "post"
      ],
      "authLevel": "function",
      "name": "req"
    }
  ],
  "disabled": false,
  "scriptFile": "../bin/FunctionApp5.dll",
  "entryPoint": "FunctionApp5.DeliveryComplete.Run"
}

Si je l'exécute depuis Visual Studio, j'obtiens l'erreur suivante :

Cannot bind parameter 'outputTable' to type ICollector`1

J'ai quelques questions à propos de ce comportement : la première et principale est la suivante : pourquoi le fichier function.json n'affiche-t-il pas le binding de sortie ? Deuxièmement, je comprends pourquoi il n'est pas possible de modifier ce fichier lors du déploiement à partir de VS, mais existe-t-il un moyen de gérer les liaisons sans avoir à deviner (j'ai découvert l'utilisation de ICollector dans ce poste ), mais je ne trouve rien d'autre qui dise qu'il devrait ou ne devrait pas être là.

Enfin, comment l'exécution depuis le bureau interagit-elle (ou non) avec la fonction publiée : se connecte-t-elle à la version publiée de la fonction, ou génère-t-elle le fichier function.json localement ?

4voto

Mikhail Points 344
  1. C'est une source fréquente de confusion, mais les liens d'entrée et de sortie ne sont pas visibles dans les fichiers générés. function.json seul le déclencheur le fait. Ils fonctionneront toujours normalement.

  2. Si vous essayez d'écrire dans une table de stockage, vous devez utiliser la fonction Table au lieu de l'attribut StorageAccount . ICollector est mentionné dans Liaisons de stockage Azure Table pour Azure Functions .

  3. Lorsqu'ils sont exécutés localement, les fichiers restent localement et s'exécutent en temps d'exécution local, sans déploiement vers Azure. Ils peuvent toujours interagir avec les services Azure réels via des liaisons.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X