5

Ich versuche, vNext zu verstehen.
Ich schrieb benutzerdefinierten Users, die mit MongoDB arbeitet und implementiert diese Schnittstellen:
vNext. AspNet.Identity und benutzerdefinierter UserStore. UserStore hat Ausnahmefehler

public class UserStore : IUserStore<ApplicationUser>, IUserPasswordStore<ApplicationUser>, IUserSecurityStampStore<ApplicationUser>, 
    IUserLoginStore<ApplicationUser>, IUserClaimStore<ApplicationUser>, IUserEmailStore<ApplicationUser>, IUserRoleStore<ApplicationUser>, 
    IUserTwoFactorStore<ApplicationUser> 

In Startup.cs hinzugefügt:

app.UseServices(services => 
     { 

      services.AddIdentity<ApplicationUser>() 
       .AddUserStore(() => { return new UserStore(); }) 
       .AddUserManager<UserManager<ApplicationUser>>() 
       .AddHttpSignIn(); 

      services.AddMvc(); 
     }); 

Dann unverändert Account von Visual Studio-Vorlage zu verwenden versucht und haben Probleme .
Beim Anmelden erhalte ich ObjectDisposedException in UserStore.FindByNameAsync() - etwas namens UserStore.Dispose().
In UserManager-Code auf github.com/aspnet Store.Dispose() nur in UserManager.Dispose() aufgerufen.
Ich kann Anrufe von Dispose einfach ignorieren und alles funktioniert gut, aber das ist kein guter Weg.
So habe ich keine Ideen, was soll ich

P. S. tun Die Frage ist: Was (und warum) kann UserStore.Dispose() aufrufen?

Antwort

1

In vNext ist DI integriert und verwaltet die Lebensdauer der Identitätsdienste. Sie versuchen wahrscheinlich, die Identität zu verwenden, nachdem die Dienste entsorgt wurden. Standardmäßig haben die Identitätsdienste die Gültigkeitsdauer einer Anforderung. Wenn Sie also zum Beispiel versuchen, einen Verweis auf einen Benutzermanager anzuhängen und ihn über mehrere Anfragen hinweg wiederzuverwenden würde die ObjectDisposedException verursachen.

+0

UserManager ich erhielt von Konstruktor Parameter AccountController (UserManager, SignInManager). –

Verwandte Themen