【发布时间】: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