【发布时间】:2021-09-09 07:42:21
【问题描述】:
我们正在使用 Azure 函数计时器触发器。
这是任务流程。我正在获取一些数据,创建该数据的文件并将其上传到 AWS,然后将通知发送给特定人员以通知有关文件。
我遇到的问题是“异步调用已在进行中。必须先完成或取消才能调用此方法”,当我们遇到此问题时,通知不会发送给收件人。虽然文件有每次都正确创建并上传到 AWS。
这是我正在使用的代码
public async Task ProcessData()
{
try
{
// Get data
var data = await _process1.GetData();
if (data != null && data.Count > 0)
{
var id = 100;
var fileDisplayName = "file1";
// Process file for data
await _files.CreateAndUploadFileToAWS(data, id, fileDisplayName);
// Send Notification
await _notification.SendNotification(id, data.count, fileDisplayName);
}
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
这里是发送邮件功能
public async Task SendNotification(int id, int noOfRecords, string displayName)
{
try
{
// Get recipients for mail
var recipients= await _person.GetRecipients(id);
// Send notification
var subject = "Email Notification";
var message = "message";
if (!string.IsNullOrEmpty(subject) && !string.IsNullOrEmpty(message) && recipients.Count > 0)
await _mails.SendEmail(recipients, subject, message);
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
注意:我们经常遇到这个问题,但不是一直,有时它会发送通知,有时会显示错误。
请帮帮我。
谢谢
【问题讨论】:
-
不要这样做
throw new Exception(e.Message);- 你刚刚丢失了堆栈跟踪,而这正是我们(和你)所需要的 -
-
可以发一下
CreateAndUploadFileToAWS的实现吗? -
每当您写
catch (Exception e)时,您都可能会吞下各种异常。不要这样做。您应该只捕获您可以有意义地处理的特定异常。 -
除了信息不足和调试问题,看看有没有帮助stackoverflow.com/questions/50036795/…
标签: c# .net azure azure-functions