2016-04-26 8 views
1

Ich versuche, eine Bestätigungs-E-Mail zu senden, wenn ein Benutzer sich zusammen mit dem generierten Token registriert. Token ist in Ordnung. Aber als E-Mail zu senden, ich diese Störung erhalte:ASP.NET Identity IUserEmailStore Fehler in MVC

System.NotSupportedException: Store does not implement IUserEmailStore<TUser>. 

Und mein Code innerhalb Account in der Register-Methode sieht wie folgt aus: Es ist die SendEmailAsync ist() -Methode, die den Fehler verursacht:

if (result.Succeeded) 
{ 
    var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); 
    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); 
    await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>"); 
    ViewBag.Link = callbackUrl; 
    return View("DisplayEmail"); 
} 

In meiner IdentityConfig.cs Datei, ich habe eine Klasse:

public class ApplicationUserManager : UserManager<ApplicationUser> 
{ 
     public ApplicationUserManager(IUserStore<ApplicationUser> store) 
      : base(store) 
     { 
     } 
} 

auch in meiner IdentityConfig.cs Datei, habe ich eine andere Klasse:

public class EmailService : IIdentityMessageService 
    { 
     public Task SendAsync(IdentityMessage message) 
     { 
      // Plug in your email service here to send an email. 
      SmtpClient client = new SmtpClient(); 
      return client.SendMailAsync(ConfigurationManager.AppSettings["TranscriptEmailAddr"], 
             message.Destination, 
             message.Subject, 
             message.Body);      
     } 
    } 

Bitte assistieren.

Antwort

2

ich heraus, dachte nur, dass ich Microsoft.AspNet.Identity.EntityFramework Version 1.0.0 installiert hatte, aber ich brauchte Version 2.0.0. Ich installiere es durch die Paket-Manager-Konsole durch Eingabe von:

Install-Package Microsoft.AspNet.Identity.EntityFramework -Version 2.2.1 

In dieser späteren Version implementiert Users IUserEmailStore, die die neuen E-Mail-Methoden hat.

0

In Ihrem Modell, oder irgendwo in Ihrem Code müssen Sie eine Klasse Users sein (es sei denn Sie einen Rahmen wie EntityFrameworkIdentity verwenden).

Versuchen in ganzer Lösung von „Users“ zu finden und Sie sehen, dass Sie diese Schnittstelle auf, sie umzusetzen haben.

wie:

public class UserStore : IUserStore<UserIdentity>, IUserPasswordStore<UserIdentity>, IUserEmailStore<UserIdentity>{ 
} 
+0

Hallo @ Henrique. Ja, ich verwende Microsoft.AspNet.Identity.EntityFramework, damit ich verstehe, dass ich den IUserStore nicht explizit implementieren muss. Was mich mehr beunruhigt, ist, dass ich ein Beispielprojekt heruntergeladen habe, indem ich es im Paket-Manager installiert habe: PM> Install-Package Microsoft.AspNet.Identity.Samples -Pre. Dieses Projekt funktioniert einwandfrei und kann E-Mails senden, aber mein Projekt funktioniert nicht. –

Verwandte Themen