首页 文章

无法捕获Azure辅助角色中的异常

提问于
浏览
0

我正在尝试创建Azure辅助角色以下载电子邮件并将其存储在数据库中 . 当我无法连接或通过邮件服务器进行身份验证时,我会抛出一些异常,但是捕获这些异常是行不通的 .

我抛出的异常没有被try catch块捕获 . 这是为什么?

The RunAsync method of my worker role:

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;
    }

1 回答

  • 0

    事实证明,线程实际上并没有崩溃,而是无限期地挂起 . 这似乎是我正在使用的电子邮件库中的一个错误OpaqueMail,当您尝试 Build 非SSL POP3或IMAP连接时会出现该错误 . 我在他们的GitHub页面上向开发人员提出了一个错误 .

    当我强制进行SSL连接时,一切都按预期工作,抛出的异常会被捕获 .

    总而言之,一个错误导致线程挂起,问题从未与Azure,异步方法或异常处理相关 . 这一直是一个OpaqueMail的错误 .

相关问题