0
我正在尝试创建Azure工作者角色以下载电子邮件并将它们存储在数据库中。当我无法连接邮件服务器或使用邮件服务器进行身份验证时,我会抛出一些例外情况,但捕获这些邮件不起作用。无法捕获Azure工作者角色中的异常
我抛出的异常没有被try catch块捕获。这是为什么?我的辅助角色
的RunAsync方法:
private async Task RunAsync(CancellationToken cancellationToken)
{
// TODO: Replace the following with your own logic.
while (!cancellationToken.IsCancellationRequested)
{
Trace.TraceInformation("Working");
var emailManager = new EmailManager();
var emails = new List<Email>();
try
{
emails = emailManager.GetNewEmails("outlook.office365.com", 993, "email", "password");
}
catch(Exception ex)
{
Trace.TraceInformation("Error");
}
await Task.Delay(1000);
}
}
EmailManager.GetNewEmails()
public List<Email> GetNewEmails(string server, ushort port, string username, string password)
{
var imapClient = new ImapClient(server, port, username, password, false);
if (!imapClient.Connect())
throw new Exception("Unable to connect to server.");
if (!imapClient.Authenticate())
throw new Exception("Unable to authenticate with server.");
var messages = imapClient.GetMessages();
var emails = Mapper.Map<List<MailMessage>, List<Email>>(messages);
return emails;
}
你确定你的'EmailManager()'构造函数没有抛出异常吗? –
将while循环放入try catch中。这将确保其他语句不会抛出异常。 –
@BrendanGreen我已经在GetNewEmails()内部创建了断点,并通过逐步遍历我到达imapClient.Connect()的代码,然后停止。这是因为这是我抛出异常的地方,它最终没有被我的RunAsync方法中的catch块捕获。我试图弄清楚为什么它没有被捕获到。 – Maritim