Store does not implement IUserRoleStore ASP.NET Core Identity

后端 未结 3 1137
孤街浪徒
孤街浪徒 2021-02-19 03:04

I\'m using ASP.NET Core 2.1 Identity. I\'ve overridden IdentityUser because I need to add some additional properties on the user.

In Startup.cs

servic         


        
相关标签:
3条回答
  • 2021-02-19 03:18

    For there are not any answers about the solution in asp.net Core 2.2, I would like to share the same error I meet in asp.net Core 2.2

    First, here is another solution for the same error in asp.net core 2.1 https://github.com/aspnet/AspNetCore.Docs/issues/8683

    And thanks to the author's idea, I meet the problem when I follow the official guidance in asp.net core 2.2 (the url is in here : MicrosoftDocs For asp.net core 2.2). When I finish the step he says and try to run the project, it throws a exception "Store does not implement IUserRoleStore"

    and the problem is : actually, this is the sample for asp.net core 2.1 (And I strongly doubt that why the Microsoft will provide users a docs with not any sample codes, which can't make sense probably)

    And you will find that, in Areas/Identity/Data/IdentityHostingStartup.cs IdentityHostingStartup::Configure method you have the following codes :

    services.AddDefaultIdentity<IdentityUser>().AddEntityFrameworkStores<ApplicationDbContext>();
    

    which is same as the code you should add in /Program.cs ConfigureService as the step : Add Role services to Identity in docs mentioned :

    services.AddDefaultIdentity<IdentityUser>().AddRoles<IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>();
    

    so if you meet the same problem in asp.net core 2.2, an alternative solution is :

    1. Following the docs in asp.net 2.2
    2. When you meet this Chapter : Add Role services to Identity , just ignore the official docs and do it :

    replace the row

    services.AddDefaultIdentity<IdentityUser>().AddEntityFrameworkStores<ApplicationDbContext>();
    

    with

    services.AddDefaultIdentity<IdentityUser>().AddRoles<IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>();
    

    in Areas/Identity/Data/IdentityHostingStartup.cs IdentityHostingStartup::Configure method, but not add it in program.cs (the file can't be deleted in asp.net core 2.2)

    The project I use Asp.net Identity will be updated later in my repos : UWPHelper , Good Luck :)

    0 讨论(0)
  • 2021-02-19 03:26

    In Startup.cs, I was missing AddRoles so

    services.AddDefaultIdentity<PortalUser>()
        .AddEntityFrameworkStores<ApplicationDbContext>();
    

    should be

    services.AddDefaultIdentity<PortalUser>()
        .AddRoles<IdentityRole>()
        .AddEntityFrameworkStores<ApplicationDbContext>();
    

    Note: The order is critical. AddRoles must come before AddEntityFrameworkStores

    0 讨论(0)
  • 2021-02-19 03:36

    I know that the author already fixed his issue ,but I'll add this for anyone else that did all the steps in the above answer and still has this error.

    From Aspnet github

    You must delete autogenerated IdentityHostingStartup.Configure method in Areas/Identity/IdentityHostingStartup.cs

    0 讨论(0)
提交回复
热议问题