当我最初创建数据库时,我正试图将一些角色植入我的身份db上下文。
为此,我尝试实现代码,如下所述: https://stackoverflow.com/a/29547994/985798
我在Startup-class中的ConfigureServices方法中试过这个: public void ConfigureServices(IServiceCollection services)
使用此代码段:
var rolestore =
new Microsoft.AspNetCore.Identity.EntityFrameworkCore.
RoleStore<Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole>(identityContext);
var roleManager = new Microsoft.AspNetCore.Identity.RoleManager
<Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole>(rolestore);
//use rolemanager to insert roles etc.
问题是,它似乎无法在使用Visual Studio 2017创建的全新Core项目中运行。
它给了我以下构建错误:
CS7036没有给出符合要求的论据 形式参数&#39; roleValidators&#39;的 &#39; RoleManager.RoleManager(IRoleStore, IEnumerable&gt;,ILookupNormalizer, IdentityErrorDescriber,ILogger&gt;, IHttpContextAccessor)&#39;
即使我使用了另一个重载(其他参数的值为null),RoleManager也似乎没有&#34;创建&#34;方法了。
所以,我陷入了困境。我需要做什么?角色管理器的ASP.NET MVC Core实现中有什么变化吗?我用错了吗?
答案 0 :(得分:4)
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
public static class Seed
{
public static void Initialize(IServiceProvider provider)
{
var _context = provider.GetRequiredService<ApplicationDbContext>();
var userManager = provider.GetRequiredService<UserManager<ApplicationUser>>();
var roleManager = provider.GetRequiredService<RoleManager<IdentityRole>>();
}
}
然后低于Configure()
startup.cs
中的大部分代码
Seed.Initialize(app.ApplicationServices);
HTH(希望有帮助)。