如何将 UserManager 注入 ASP.NET Core 2.0 中的另一个服务

Posted

技术标签:

【中文标题】如何将 UserManager 注入 ASP.NET Core 2.0 中的另一个服务【英文标题】:How to inject UserManager to another service in ASP.NET Core 2.0 【发布时间】:2018-11-20 02:43:30 【问题描述】:

我创建了一个使用用户管理员身份的服务

public class UserManagerService : IUserManagerService

    private readonly UserManager<IdentityUser> userManager;

    public UserManagerService(UserManager<IdentityUser> userManager)
    
        this.userManager = userManager;
    

我将这一行添加到我的 startup.cs 中

services.AddTransient<IUserStore<IdentityUser>, UserStore<IdentityUser>>();
services.AddTransient<UserManager<IdentityUser>>();

但我有这个错误:

InvalidOperationException:无法解析类型“Microsoft.AspNet.Identity.UserManager”的服务

有谁知道我们如何将用户管理器注入另一个服务?

【问题讨论】:

【参考方案1】:

我假设您看到此错误是因为您尚未注册所有用户管理器依赖项。 https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.identity.usermanager-1?view=aspnetcore-2.1看构造函数,看看构造UserManager需要注册什么。或者,您可以通过简单的扩展注册所有必需的身份服务。 services.AddIdentity&lt;IdentityUser, IdentityRole&gt;()

【讨论】:

以上是关于如何将 UserManager 注入 ASP.NET Core 2.0 中的另一个服务的主要内容,如果未能解决你的问题,请参考以下文章

将自定义 UserManager 注入 Controller Net Core 2.1

如何将我自己的类注入到 ASP.NET MVC Core 的控制器中?

ASP.NET Core 标识不注入 UserManager<ApplicationUser>

DBContext更改后如何在控制器内创建新的UserManager对象

如何在服务层获取用户

如何在 blazor 页面上使用用户管理器?