C# MVC 5 Identity 2.0注册电子邮件确认问题

C# MVC 5 Identity 2.0注册电子邮件确认问题,c#,asp.net-mvc-5,asp.net-identity-2,C#,Asp.net Mvc 5,Asp.net Identity 2,有人能看一下下面的代码,看看是什么导致了错误“在处理您的请求时发生了错误”?我正在使用ASP.NET Identity 2.0,请参见下面的代码: IdentityConfig public class EmailService : IIdentityMessageService { public Task SendAsync(IdentityMessage message) { // Plug in your email service here to send

有人能看一下下面的代码,看看是什么导致了错误“在处理您的请求时发生了错误”?我正在使用ASP.NET Identity 2.0,请参见下面的代码:

IdentityConfig

public class EmailService : IIdentityMessageService
{
    public Task SendAsync(IdentityMessage message)
    {
        // Plug in your email service here to send an email.
        var credentialUserName = "info@ourdoamin.com";
        var sentFrom = "noreply@ourdoamin.com";
        var pwd = "ourpassword";

        // Configure the client:
        System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("mail.ourdoamin.com");

        client.Port = 25;
        client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
        client.UseDefaultCredentials = false;

        // Creatte the credentials:
        System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(credentialUserName, pwd);
        client.EnableSsl = false;
        client.Credentials = credentials;

        // Create the message:
        var mail = new System.Net.Mail.MailMessage(sentFrom, message.Destination);
        mail.Subject = message.Subject;
        mail.Body = message.Body;

        return Task.FromResult(0);
    }
}
出于明显的原因,出于安全原因,我没有在上面的代码中使用正确的凭据,但是我在同一个项目中有一个使用正确凭据的联系人表单,并且电子邮件工作得非常好

如果我注释掉上面的代码(公共类EmailService:IIdentityMessageService{public Task SendAsync(IdentityMessage message){return Task.FromResult(0);}}}除外),注册过程将成功完成


任何帮助都将不胜感激:-)

问题在于行
返回任务。FromResult(0)
应该是
返回client.SendMailAsync(mail)取而代之的是,现在一切都正常了:-)

在我看来,使用await更为正确(至少在identity>=2.0的版本中是这样)

public class EmailService : IIdentityMessageService
{
    public async Task SendAsync(IdentityMessage message)
    {
        await configSMTPasync(message);
    }

    // send email via smtp service
    private async Task configSMTPasync(IdentityMessage message)
    {
        // Plug in your email service here to send an email.
        var credentialUserName = "info@ourdoamin.com";
        var sentFrom = "noreply@ourdoamin.com";
        var pwd = "ourpassword";

        // Configure the client:
        System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("mail.ourdomain.com");

        client.Port = 25;
        client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
        client.UseDefaultCredentials = false;

        // Creatte the credentials:
        System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(credentialUserName, pwd);
        client.EnableSsl = false;
        client.Credentials = credentials;

        // Create the message:
        var mail = new System.Net.Mail.MailMessage(sentFrom, message.Destination);
        mail.Subject = message.Subject;
        mail.Body = message.Body;

        await client.SendMailAsync(mail);
    }
}