In einer neuen ASPNET MVC-Anwendung erhalten Sie jetzt die AspIdentity Goodies kostenlos.AspIdentiy ApplicationUserManager ist Static, wie zu erweitern, so dass es an meinem IoC-Framework teilnimmt?
Es gibt eine harmlose kleine Linie "schließen Sie Ihren E-Mail-Dienst hier an".
Also habe ich:
public class EmailService : IIdentityMessageService
{
private static My.Services.IEmailService _emailservice;
public EmailService(Insolvency.Services.IEmailService emailservice)
{
_emailservice = emailservice;
}
public Task SendAsync(IdentityMessage message)
{
_emailservice.SendEmail(message);
return Task.FromResult(0);
}
}
und jetzt die Freude:
public class ApplicationUserManager : UserManager<ApplicationUser>
{
private My.Services.IEmailService _emailservice;
public ApplicationUserManager(IUserStore<ApplicationUser> store, My.Services.IEmailService emailservice): base(store)
{
_emailservice = emailservice;
}
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)
{
var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>()), _emailservice);
...
als Owin Tritte in ruft die auf ApplicationUserManager erstellen in Startup.Auth.cs:
public partial class Startup
{
public void ConfigureAuth(IAppBuilder app)
{
...
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
und wie ich AutoFac als meine IoC-Container in global.asa verwenden
x.csbuilder.RegisterType<My.Services.EmailService>().As<IEmailService>();
wenn die Create-Methode so statisch ist, erhalte ich:
_emailService
null ist
ich hier haben gesucht: http://forums.asp.net/post/5293670.aspx und How do i create an instance of UserManager und Using Autofac to provide types exported by static factory. aber kein Glück.
Wenn ich ändern:
private My.Services.IEmailService _emailservice;
seine Öffentlichkeit nicht-statisch Ich fühle mich IoC Götter schütteln ihre Köpfe, und ich kann nicht ‚Objektverweis erforderlich‘
danke. Ich werde versuchen, zwischen Unity und Autofac zu konvertieren. – OzBob
Compiler gibt derzeit Fehler: ... der Typ 'ApplicationUser' kann nicht als Typ Parameter 'TUser' im generischen Typ oder Methode 'Microsoft.AspNet.Identity.EmailTokenProvider' verwendet werden. Es gibt keine implizite Referenzkonvertierung von 'ApplicationUser' zu 'Microsoft.AspNet.Identity.IUser '. Könnten Sie Ihre Quelle für IdentityModels.cs –
OzBob
fertig stellen. lass es mich wissen, wenn es hilft – free4ride