SendMailAsync :异步模块或处理程序已完成,而异步操作仍处于挂起状态

2024-03-23

使用时SendMailAsync我收到以下错误:

异步模块或处理程序在异步时完成 操作仍悬而未决

我的代码:

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

来自控制器的呼叫:

public async System.Threading.Tasks.Task<ActionResult> 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<ActionResult> Register()
{
   await SendEmailAsync();
}

private Task SendEmailAsync()
{
   return SMTPEmail.SendEmailAsync(msg, output.ToString());
}

旁注 - 我不知道为什么你有这么多SendMail方法,您可以将它们缩小到单个方法调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SendMailAsync :异步模块或处理程序已完成,而异步操作仍处于挂起状态 的相关文章

随机推荐