http 处理程序 (ashx) 中 SmtpClient SendMailAsync 的异步错误

Asynchronous error on SmtpClient SendMailAsync in http handler (ashx)

多年来,我一直是 运行 C# http 处理程序 (ashx) 来发送邮件。我们认为当我们切换到 4.5.1 时问题就开始了。我们收到错误:

"An asynchronous operation cannot be started at this time. Asynchronous operations may only be started within an asynchronous handler or module or during certain events in the Page lifecycle..."

我正在使用:

public static void sendMessage(....
...
client.SendAsync(message);

在四处寻找发生了什么之后,方法更改为:

public static async Task sendMessage(....
...
await client.SendMailAsync(message);

我假设我们仍然会收到此错误,因为并非堆栈中的所有调用都具有异步运算符。要做到这一点,我必须让整个处理程序,它做很多其他事情,异步的,这听起来不像是发送邮件的好主意。

所以,我有两个问题:

  1. 我没有在最终调用 sendMessage 的每个方法中使用异步,我说得对吗?

  2. 现在如何异步发送邮件?

因为没有评论了,所以才开新帖,同步发帖。似乎工作正常,此后没有出现问题。