gpt4 book ai didi

dependency-injection - InvalidOperationException : A circular dependency was detected for the service of type 'Microsoft. AspNetCore.Identity.UserManager

转载 作者:行者123 更新时间:2023-12-01 16:05:58 24 4
gpt4 key购买 nike

在我根据This article定制了asp.net core身份服务以支持 Multi-Tenancy 之后,发生了这种情况。我对其进行了简化以满足我的需求。

这是我的基本设置。

1) 自定义应用程序用户

public class ApplicationUser : IdentityUser<int>, IEntityBase{}

2) 自定义角色

public class ApplicationRole : IdentityRole<int>, IEntityBase{}

3) 自定义角色存储

public class RoleStoreMultiTenant<TRole> : RoleStore<TRole, ApplicationDbContext, int>{}

4) 自定义用户存储

public class UserStoreMultiTenant<TUser, TRole, TKey> : UserStore<TUser, TRole, ApplicationDbContext, int>{}

5)我的角色服务继承自上面(3)。这只是为了将我的代码与 RoleStore 覆盖的代码分开。

public class ApplicationRoleStore : RoleStoreMultiTenant<ApplicationRole>{}

6) 我的用户服务继承自上面 (4)。这只是为了将我的代码与 UserStore 覆盖的代码分开。

public class ApplicationUserStore : UserStoreMultiTenant<ApplicationUser, ApplicationRole, int>{}

7)我的ApplicationDbContext是;

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, int>{}

8)我与身份相关的启动配置(在ConfigureServices中)。

services.AddScoped<IRoleStore<ApplicationRole>, ApplicationRoleStore>();
services.AddScoped<IUserStore<ApplicationUser>, ApplicationUserStore>();
services.AddIdentity<ApplicationUser, ApplicationRole>(o =>
{
o.User.RequireUniqueEmail = true;
//options code
}).AddUserStore<ApplicationUserStore>()
.AddEntityFrameworkStores<ApplicationDbContext, int>();

9)在启动配置方法中我有;

//other code
app.UseIdentity();
//other code

10) 我有一个基 Controller ,期望通过构造函数注入(inject)在下面

public BaseController(ApplicationDbContext dbContext, 
UserManager<ApplicationUser> userManager,
SignInManager<ApplicationUser> signInManager,
IMessageServices messageServices, ILoggerFactory loggerFactory,
AppTenant currentTenant, IMapper mapper)
{
_dbContext = dbContext;
_signInManager = signInManager;
_userManager = userManager;
_messageServices = messageServices;
_logger = loggerFactory.CreateLogger<BaseController>();
_currentTenant = currentTenant;
_mapper = mapper;
}

所有其他 Controller 都继承自此基础。

我的数据库迁移工作正常,并且使用我的自定义属性创建身份数据库结构没有任何问题。但是,当我运行该应用程序时,我收到主题中显示的错误。这是;

InvalidOperationException: A circular dependency was detected for the service of type 'Microsoft.AspNetCore.Identity.UserManager`1[Registrar.Data.MultitenantIdentity.Models.ApplicationUser]'.

堆栈跟踪显示了所有框架代码,我发现很难找出循环引用

谁能给我指出正确的方向吗?

最佳答案

发现问题了。在类里面;

public class ApplicationUserStore : UserStoreMultiTenant<ApplicationUser, ApplicationRole, int>{}

我在构造函数中请求 UserManager 导致了问题。如果框架能够显示我的代码中的哪一行导致了失败,那就太好了。

关于dependency-injection - InvalidOperationException : A circular dependency was detected for the service of type 'Microsoft. AspNetCore.Identity.UserManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45397715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com