vNext.AspNet.Identity和自定义UserStore.UserStore已处理异常



我正在努力理解vNext
我编写了自定义UserStore,它与MongoDB一起工作,并实现了以下接口:

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

在Startup.cs中添加:

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

然后尝试使用Visual Studio模板中未更改的AccountController,出现问题
登录时,我在UserStore.FindByNameAsync()中获得ObjectDisposedException,它称为UserStore.Dispose()。
在github.com/aspnet Store.Dispose()上的UserManager代码中,仅在UserManager.Dispose中调用。
我可以忽略Dispose的调用,一切都很好,但这不是一个好方法。
所以我不知道该怎么办

附言:问题是:什么(以及为什么)可以调用UserStore.Dispose()?

在vNext中,DI内置并管理身份服务的生存期。您可能试图在服务被释放后使用标识,默认情况下,标识服务的生存期范围为一个请求,因此,如果您试图挂起对用户管理器的引用并在多个请求中重用它,这将导致ObjectDisposedException。

相关内容

  • 没有找到相关文章

最新更新