SendMailAsync:在异步操作仍处于挂起状态时完成的异步模块或处理程序

使用SendMailAsync我收到以下错误:

在异步操作仍处于挂起状态时完成异步模块或处理程序

我的代码:

 public static async Task SendEmail(MessageContent messageContent, string emailBody) { SmtpClient smtpClientNoSend = new SmtpClient(); await smtpClientNoSend.SendMailAsync(mailMessage); } 

从控制器呼叫:

 public async System.Threading.Tasks.Task Register() { await SendEmail(); } private void SendEmail() { SMTPEmail.SendEmail(msg, output.ToString()); return null; } 

您的呼叫层次结构已损坏。 您不应该使用async void ,仅用于事件处理程序,而是使用async Task

 public static Task SendEmailAsync(MessageContent messageContent, string emailBody) { SmtpClient smtpClientNoSend = new SmtpClient(); return smtpClientNoSend.SendMailAsync(mailMessage); } public async Task Register() { await SendEmailAsync(); } private Task SendEmailAsync() { return SMTPEmail.SendEmailAsync(msg, output.ToString()); } 

旁注 – 我不确定为什么你有这么多SendMail方法,你可以将它们缩小到一个方法调用。