0

Azure WebJobs SDK をいじって、インスタンスで関数をトリガーすると、関数にCallAsync()渡さJobHostれたインスタンスTextWriterCancellationTokenインスタンスがすぐに破棄され、キャンセル状態のログと監視には役に立たなくなります。

デバッグのために、コードをコンソール アプリとして実行します。Main() 内のコードは次のようになります。

_host = new JobHost();
_host.StartAsync().Wait();
_host.CallAsync(typeof(Functions).GetMethod("ProcessAggregationsAsync"));

Console.ReadKey();

関数は次のとおりです(ロジックなし):

[NoAutomaticTrigger]
public static async void ProcessAggregationsAsync([Table("table1")] CloudTable tbl, TextWriter log, CancellationToken cancelToken)
{
    log.WriteLine("Hello");
    ...
    log.WriteLine("Hello 2"); // --> log is disposed
}

関数ProcessAggregationsAsync()には、いくつかのロジック (Azure テーブルの監視といくつかのデータの処理) を実行し、正常に動作する無限ループがあります。問題は、キャンセルトークンをチェックするコードを追加するか、提供されたログ (TextWriter) にいくつかの特性をログに記録するときに発生します。すぐにはログに 2 つのエントリが書き込まれますが (Azure テーブル "azure-webjobs-hosts")、失敗します。

何が間違っている可能性がありますか?それらのオブジェクトが破棄されるのはなぜですか?

4

1 に答える 1