3

Visual Studio 2017プレビューを実行していて、機能コードをローカルで実行しています.Auture関数のプロジェクトテンプレートをそのまま使用しています。私は、出力バインディングを使用して、サービスバスキューにメッセージを送信するタイマーによってトリガされたAzure関数をしようとしていますが、WebJob SDKが出力を文字列型にバインドできないように見えます。Azure関数出力サービスバスバインディングタイマーからトリガー

バインディング

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

タイマ機能

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!"; 
     } 
    } 
} 

エラーメッセージ

TimerTriggerCSharp:Microsoft.Azure.WebJobs.Host:エラーのインデックス付け メソッド 'Functions.TimerTriggerCSharp'。 Microsoft.Azure.WebJobs.Host: パラメータ 'msg'をバインドして文字列&にバインドできません。パラメーター Typeがバインディングでサポートされていることを確認してください。バインディング拡張 (ServiceBus、タイマーなど)を使用している場合は、スタートアップコードの内線番号( config.UseServiceBus(config.UseTimers()など)の登録メソッドを にしたことを確認してください。 )など)。

私は、セットアップのステップを逃し、またはService BusはあなたがServiceBusの結合属性が欠落しているように見えますoutパラメータ

答えて

3

の文字列をサポートしていません実際に結合しています。私はout stringではなくICollector<T>タイプを使用しましたが、いずれにしても問題ありません。また、あなたのServiceBus属性と一致するlocal.settings.jsonで定義されている次のローカル設定が必要になりますVS2017プレビューツールでローカルで実行するには

[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"; 
} 

{ 
    "Values": { 
    "ServiceBusConnection" : "Endpoint=sb://.....your connection", 
    "QueueName": "my-service-bus-queue 
    } 
} 
関連する問題