C# 当异步操作仍挂起时,仍在完成获取异步模块或处理程序

C# 当异步操作仍挂起时,仍在完成获取异步模块或处理程序,c#,asp.net-mvc,asp.net-mvc-4,async-await,C#,Asp.net Mvc,Asp.net Mvc 4,Async Await,我知道这个问题已经被问过了(),但我显然还是做错了什么,因为我仍然会遇到以下错误: 异步模块或处理程序在执行异步操作时完成 仍在等待 这是我的控制器的代码: [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> ForgotPassword(ForgotPasswordViewModel model) { if (ModelState.IsValid)

我知道这个问题已经被问过了(),但我显然还是做错了什么,因为我仍然会遇到以下错误:

异步模块或处理程序在执行异步操作时完成 仍在等待

这是我的控制器的代码:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> ForgotPassword(ForgotPasswordViewModel model)
{
    if (ModelState.IsValid)
    {
        var user = await UserManager.FindByNameAsync(model.Email);

        if (user == null || !(await UserManager.IsEmailConfirmedAsync(user.Id)))
        {
            bool isApproved = IsOrganizationForMemberApproved(user);

            if (!isApproved)
            {
                ModelState.AddModelError("", "Your organization has not been approved.");
                return View(model);
            }

            // Don't reveal that the user does not exist or is not confirmed
            return View("ForgotPasswordConfirmation");
        }

        await CustomEmailService.SendPasswordReset(this, UserManager, Request, user);

        return RedirectToAction("ForgotPasswordConfirmation", "Account");
    }

    // If we got this far, something failed, redisplay form
    return View(model);
}
最后是负责发送电子邮件的功能:

public async Task SendEmailAsync(string toEmailAddress,
       toDisplayName, string subject, string htmlContent)
{
    //... read settings
    var message = new MailMessage();

    message.To.Add(new MailAddress(toEmailAddress, toDisplayName));
    message.From = new MailAddress(fromEmailAddress, fromDisplayName);
    message.Subject = subject;
    message.Body = htmlContent;
    message.IsBodyHtml = true;

    using (var smtp = new SmtpClient())
    {
        var credential = new NetworkCredential
        {
          UserName = smtpUserName,
          Password = smtpPassword
        };
        smtp.Credentials = credential;
        smtp.Host = smtpHost;
        smtp.Port = Convert.ToInt32(smtpPort);
        smtp.EnableSsl = Convert.ToBoolean(enableSsl);
        await smtp.SendMailAsync(message);
    }
}
我错过了什么?任何帮助都将不胜感激


谢谢。

错误是什么?错误意味着某个地方有一个异步方法,您不需要等待。不确定在哪里,但如果在代码中搜索
async
关键字,应该不太难找到find@KevinGosse如果你看一下我发布的3个函数,它们都有async关键字。这就是它让我发疯的原因!奇怪的是,这种情况只会发生在不一致的情况下,只有在使用特定的smtp主机服务器名称时才会发生,而在与另一个smtp主机服务器名称一起使用时才不会发生。反正我会继续找的。谢谢
public async Task SendEmailAsync(string toEmailAddress,
       toDisplayName, string subject, string htmlContent)
{
    //... read settings
    var message = new MailMessage();

    message.To.Add(new MailAddress(toEmailAddress, toDisplayName));
    message.From = new MailAddress(fromEmailAddress, fromDisplayName);
    message.Subject = subject;
    message.Body = htmlContent;
    message.IsBodyHtml = true;

    using (var smtp = new SmtpClient())
    {
        var credential = new NetworkCredential
        {
          UserName = smtpUserName,
          Password = smtpPassword
        };
        smtp.Credentials = credential;
        smtp.Host = smtpHost;
        smtp.Port = Convert.ToInt32(smtpPort);
        smtp.EnableSsl = Convert.ToBoolean(enableSsl);
        await smtp.SendMailAsync(message);
    }
}