📜  尝试激活“PathApp.Controllers.SearchPathController”时无法解析“Microsoft.AspNetCore.Identity.RoleManager`1[Microsoft.AspNetCore.Identity.IdentityRole]”类型的服务. - C# (1)

📅  最后修改于: 2023-12-03 15:39:21.358000             🧑  作者: Mango

尝试激活“PathApp.Controllers.SearchPathController”时无法解析“Microsoft.AspNetCore.Identity.RoleManager`1[Microsoft.AspNetCore.Identity.IdentityRole]”类型的服务 - C#

在使用ASP.NET Core Identity中的角色管理器时,有时会遇到上述错误信息。这意味着依赖注入系统无法解析RoleManager类型的服务。

通常,此错误是由以下原因之一引起的:

  • 必要的依赖项未注入依赖项注入容器。
  • 注入的依赖项不正确或不完整。
  • Identity服务未在Startup.cs文件中正确配置。

要解决此错误,可以进行以下操作:

  1. 确保Identity服务正确配置

在Startup.cs文件中,应该有以下服务配置:

services.AddIdentity<IdentityUser, IdentityRole>()
                .AddEntityFrameworkStores<AppDbContext>()
                .AddDefaultTokenProviders();

如果没有添加Identity服务,或者Identity服务没有正确配置,则会导致上述错误。

  1. 注入RoleManager

在使用RoleManager时,应该将其注入依赖项注入容器中。例如,在SearchPathController类中,您可能会注入RoleManager,如下所示:

public class SearchPathController : Controller
{
    private readonly RoleManager<IdentityRole> _roleManager;

    public SearchPathController(RoleManager<IdentityRole> roleManager)
    {
        _roleManager = roleManager;
    }

    // ...
}

如果您未将RoleManager注入依赖项注入容器中,则可能会导致上述错误。

  1. 检查其他依赖项

如果RoleManager已正确注入依赖项注入容器中,但您仍然收到上述错误消息,则可能是因为其他依赖项未正确注入。在此情况下,您可以通过调试代码来查找源错误。

总之,要解决此错误,您需要查看每个依赖项,并确保它们已正确配置和注入。