2017-11-14 21 views
0

を結果ではないバインディング:ドキュメントhereによるとAzureの機能 - ICollector私は、次のC#の機能コード持ってfunction.json

{ 
    "generatedBy": "Microsoft.NET.Sdk.Functions.Generator-1.0.6", 
    "configurationSource": "attributes", 
    "bindings": [ 
    { 
     "type": "timerTrigger", 
     "schedule": "* * * * * *", 
     "useMonitor": true, 
     "runOnStartup": false, 
     "name": "myTimer" 
    } 
    ], 
    "disabled": false, 
    "scriptFile": "../bin/MyApp.App.Tasks.Functions.dll", 
    "entryPoint": "MyApp.App.Tasks.Functions.UpdateCohortsByTenantFunction.Run" 
} 

[FunctionName("UpdateCohortsByTenantFunction")] 
[return: Queue("my-queue", Connection = "MyStorage")] 
//note - I have tried both method decoration and parameter decoration 
public static async Task Run([TimerTrigger("* * * * * *")]TimerInfo myTimer, IAsyncCollector<AudienceMessage> output) 
{ 
    //some logic 
    foreach (var audience in audiences) 
    { 
     await output.AddAsync(new AudienceMessage 
     { 
      AudienceId = audience.Id, 
      TenantId = tenant.Id 
     }); 
    } 
} 

次function.jsonを生成json出力には、 "out"方向のキューにバインディングが含まれている必要があります。すなわち:私はNPMツール(設定はhereを説明)を経由してキューを実行しようとすると

{ 
    "type": "queue", 
    "direction": "out", 
    "name": "$return", 
    "queueName": "outqueue", 
    "connection": "MyStorageConnectionAppSetting", 
} 

、私は次のエラーを取得する:

Run: Microsoft.Azure.WebJobs.Host: Error indexing method 'UpdateCohortsByTenantFunction.Run'. Microsoft.Azure.WebJobs.Host: Cannot bind parameter 'output' to type IAsyncCollector`1. Make sure the parameter Type is supported by the binding. If you're using binding extensions (e.g. ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. config.UseServiceBus(), config.UseTimers(), etc.).

ドキュメントは、スタートアップコードを経由して結合への参照が含まれていません。私が理解しているのは、これは上のリンクされたMicrosoftのドキュメントと私のサンプルコードで説明されている属性を使って行われますが、そうでない場合はエラーメッセージが表示されます。

public static async Task Run(
    [TimerTrigger("* * * * * *")]TimerInfo myTimer, 
    [Queue("my-queue", Connection = "MyStg")] IAsyncCollector<AudienceMessage> output) 
  • function.jsonに結合何も出力されませんが期待される:

  • 答えて

    2
    1. あなたは、属性を使用してパラメータを飾る必要があり、値を返しません。属性定義のバインディングは生成されたfunction.jsonに転送されません。彼らはまだ動作します、心配しないでください。

    +0

    これはトリックを行ったようです。迅速な答えをありがとう。 – jinwood

    関連する問題