【问题标题】:Cannot access a disposed object Object name: 'UserManager`1'无法访问已处置的对象对象名称:'UserManager`1'
【发布时间】:2017-07-26 05:31:05
【问题描述】:

我意识到这个问题在堆栈溢出中被问了很多次,但我尝试了一些答案但没有解决我的问题。我最近刚刚在我的项目中添加了统一,除了 userManager 类之外一切正常。如果我尝试在会话中访问它,它会抛出我标题中所述的无法访问错误。

   The Code that is throwing the issues and the Container below

    public AccountController(UserManager<ApplicationUser> userManager)
    {
        UserManager = userManager;

        // Start of new code
        UserManager.UserValidator = new UserValidator<ApplicationUser>(UserManager)
        {
            AllowOnlyAlphanumericUserNames = false,
        };
    }



        container.RegisterType<AdminController>();
        container.RegisterType<AccountController>();
        container.RegisterType<IBlogPostRepository, BlogPostRepository>(new HierarchicalLifetimeManager());
        container.RegisterType<IBlogViewRepository, BlogViewRepository>(new HierarchicalLifetimeManager());
        container.RegisterType<ITagRepository, TagRepository>(new HierarchicalLifetimeManager());
        container.RegisterType<ICategoryRepository, CategoryRepository>(new HierarchicalLifetimeManager());
        container.RegisterType<IBlogCategoryRepository, BlogCategoryRepository>(new HierarchicalLifetimeManager());
        container.RegisterType<IBlogTagRepository, BlogTagRepository>(new HierarchicalLifetimeManager());
        container.RegisterType<IApplicationUserRepository, ApplicationUserRepository>(new HierarchicalLifetimeManager());
        container.RegisterType<UserManager<ApplicationUser>>(new HierarchicalLifetimeManager());
        container.RegisterType<IUserStore<ApplicationUser>, UserStore<ApplicationUser>>(new InjectionConstructor(new CatchMediaContext()));
        container.RegisterType<DbContext, CatchMediaContext>(new HierarchicalLifetimeManager());

【问题讨论】:

  • 我删除了@SAm 这行它不能解决问题。
  • 如果另一个对象有对 userManager 的引用并且该对象被释放,它可能会连同它一起释放 userManager。另一种可能性是 userManager 需要某种尚未完成的初始化,并且它的属性会抛出一个误导性的已处理异常(这在 winform 控件中很常见)。
  • 查看您的代码中的所有“使用”块和对 Dipose() 的调用。同样,如果这是多线程程序的一部分,请确保将 userManager 分配给成员字段,以免被垃圾回收。
  • @Loathing 我做了。我解决了错误。非常感谢
  • 您想将此纳入答案以便其他人受益吗?

标签: c# asp.net-mvc unity-container


【解决方案1】:

如果另一个对象具有对 userManager 的引用并且该对象已被释放,则它可能会与它一起释放 userManager。另一种可能性是 userManager 需要一些尚未完成的初始化,并且它的属性会抛出一个误导性的已处理异常(这在 winform 控件中很常见)。

【讨论】:

    【解决方案2】:

    我遇到了同样的错误。 我的发现:父部分试图渲染两种形式。这两种形式是通过在不同的控制器中调用它们各自的动作来创建的。但是不同的控制器都引用了UserManager&lt;ApplicationUser&gt; userManager。 我的解决方案:只需删除一个表单,因此该页面只有一个对 UserManager 的引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-11
      • 2020-04-23
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多