3

Je cours Visual Studio 2017 Preview et exécute le code de fonction localement et j'utilise le modèle de projet Azure Function hors de la boîte. J'essaie d'avoir une fonction Azure déclenchée par une minuterie envoyer un message à une file d'attente Service Bus en utilisant une liaison de sortie, mais il semble que le WebKob SDK ne peut pas lier la sortie à un type de chaîne.Azure Fonction Liaison de bus de service de sortie à partir du déclencheur de minuterie

Reliure

"bindings": [ 
    { 
     "type": "serviceBus", 
     "name": "msg", 
     "queueName": "myqueue", 
     "connection": "ServiceBusQueue", 
     "accessRights": "manage", 
     "direction": "out" 
    } 
    ] 

Fonction minuterie

using System; 
using Microsoft.Azure.WebJobs; 
using Microsoft.Azure.WebJobs.Host; 

namespace MyFunctionApp 
{ 
    public static class TimerTrigger 
    { 
     [FunctionName("TimerTriggerCSharp")] 
     public static void Run([TimerTrigger("1 * * * * *", RunOnStartup = true)]TimerInfo myTimer, TraceWriter log, out string msg) 
     { 
      log.Info($"C# Timer trigger function executed at: {DateTime.Now}"); 

      msg = "Hello!"; 
     } 
    } 
} 

Message d'erreur

TimerTriggerCSharp: Microsoft.Azure.WebJobs.Host: Erreur lors de l'indexation de la méthode 'Functions.TimerTriggerCSharp'. Microsoft.Azure.WebJobs.Host: Impossible de lier le paramètre 'msg' à la chaîne Chaîne &. Assurez-vous que le paramètre Type est pris en charge par la liaison. Si vous utilisez des extensions de liaison (par exemple, ServiceBus, Timers, etc.) assurez-vous que vous avez appelé la méthode d'enregistrement pour les extensions dans votre code de démarrage (par exemple config.UseServiceBus(), config.UseTimers (), etc.).

Suis-je manque une étape dans la configuration, ou ne le Bus Service de reliure vraiment pas supporter une chaîne pour un paramètre out

Répondre

3

On dirait que vous manque les attributs de liaison pour ServiceBus. J'ai seulement utilisé les types ICollector<T> plutôt qu'un out string mais cela ne devrait pas avoir d'importance.

[FunctionName("TimerTriggerCSharp")] 
public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, 
         TraceWriter log, 
         [ServiceBus("%QueueName%", Connection = "ServiceBusConnection", EntityType = Microsoft.Azure.WebJobs.ServiceBus.EntityType.Queue)] out string msg) 
{ 
    msg = "My message"; 
} 

Pour exécuter localement avec l'outillage Aperçu VS2017 vous aurez également besoin des paramètres locaux suivants définis dans local.settings.json pour correspondre avec votre attribut ServiceBus.

{ 
    "Values": { 
    "ServiceBusConnection" : "Endpoint=sb://.....your connection", 
    "QueueName": "my-service-bus-queue 
    } 
}