Azure功能未“等待”任务完成

时间:2020-02-07 20:24:47

标签: c# async-await azure-functions

说实话,我是Azure Functions的新手,并且在C#中非常基础,我一直在这里的一些帖子中寻找答案,但是我认为它们对我不起作用或我不理解它们。

我有一个自触发函数,正在对Power BI执行API调用。我想“等待”直到此调用完成,但是一旦我开始运行该函数,它就完成了而没有记录任何结果。

public async static void Run(TimerInfo myTimer, TraceWriter log){
    log.Info($"C# Timer trigger function executed at: {DateTime.Now}");    
    var credentials = new TokenCredentials(AZ_ACCESS_KEY, AZ_APP_ID);
    var PBIClient = new PowerBIClient(credentials);
    var report = await getReport(PBIClient);
    log.Info($"Response {report}");
  }

public static async Task<Microsoft.PowerBI.Api.V2.Models.Report> getReport(PowerBIClient PBIClient){
    var myTask = Task.Run(() => 
        PBIClient.Reports.GetReport(REPORT_ID)
    );
    var x = await myTask;
    return x;
}

现在我不知道为什么该功能成功完成而不记录任何内容,即使响应以某种方式不返回任何内容,该功能也可能记录Response吗?

这些是日志记录结果:

2020-02-07T20:20:53.354 [Info] Function started (Id=20ccb5b0-abf2-4957-aeb6-b9f26747c1f0)
2020-02-07T20:20:53.604 [Info] C# Timer trigger function executed at: 2/7/2020 8:20:53 PM
2020-02-07T20:20:53.684 [Info] Function completed (Success, Id=20ccb5b0-abf2-4957-aeb6-b9f26747c1f0, Duration=317ms)

看到了吗?似乎该函数不遵守等待,但我不知道我在做什么错。 谢谢

1 个答案:

答案 0 :(得分:0)

正如其他人所说的Avoid Async Void。尝试从

更改第一行
:

public async static void Run(TimerInfo myTimer, TraceWriter log)

我还在其中看到TraceWritter,您正在使用哪个版本的Azure函数?比较现代的使用ILogger。可能要升级吗?

相关问题