Я в основном следовал всему уроку с нуля, кроме пропуска javascript-клиента.Тем не менее, я скопировал некоторый код из образца Asp.Net Identity + EF Core вместе и база данных со всеми таблицами была успешно создана.Тем не менее, когда я запускаю сервер идентификации, семян нет.Я отладил файл program.cs, и переменная seed всегда равна false, пропуская условие семени.
public class Program
{
public static void Main(string[] args)
{
var seed = args.Any(x => x == "/seed");
if (seed) args = args.Except(new[] { "/seed" }).ToArray();
var host = CreateWebHostBuilder(args).Build();
if (seed)
{
using (var scope = host.Services.GetRequiredService<IServiceScopeFactory>().CreateScope())
{
SeedData.EnsureSeedData(scope.ServiceProvider);
return;
}
}
host.Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
это класс данных семени, как в примере
public class SeedData
{
public static void EnsureSeedData(IServiceProvider provider)
{
provider.GetRequiredService<ApplicationDbContext>().Database.Migrate();
provider.GetRequiredService<PersistedGrantDbContext>().Database.Migrate();
provider.GetRequiredService<ConfigurationDbContext>().Database.Migrate();
{
var userMgr = provider.GetRequiredService<UserManager<ApplicationUser>>();
var alice = userMgr.FindByNameAsync("alice").Result;
if (alice== null)
{
alice = new ApplicationUser
{
UserName = "alice"
};
var result = userMgr.CreateAsync(alice, "Pass123$").Result
if (!result.Succeeded)
{
throw new Exception(result.Errors.First().Description);
}
alice = userMgr.FindByNameAsync("alice").Result;
result = userMgr.AddClaimsAsync(user, new Claim[]{
new Claim(JwtClaimTypes.Subject, "1"),
new Claim(JwtClaimTypes.Name, "Alice Smith"),
new Claim(JwtClaimTypes.GivenName, "Alice"),
new Claim(JwtClaimTypes.FamilyName, "Smith"),
new Claim(JwtClaimTypes.Email, "AliceSmith@email.com"),
new Claim(JwtClaimTypes.EmailVerified, "true", ClaimValueTypes.Boolean),
new Claim(JwtClaimTypes.Role, "Admin")
}).Result;
if (!result.Succeeded)
{
throw new Exception(result.Errors.First().Description);
}
Console.WriteLine("user created");
}
else
{
Console.WriteLine("user already exists");
}
}
{
var context = provider.GetRequiredService<ConfigurationDbContext>();
if (!context.Clients.Any())
{
foreach (var client in Config.GetClients())
{
context.Clients.Add(client.ToEntity());
}
context.SaveChanges();
}
if (!context.IdentityResources.Any())
{
foreach (var resource in Config.GetIdentityResources())
{
context.IdentityResources.Add(resource.ToEntity());
}
context.SaveChanges();
}
if (!context.ApiResources.Any())
{
foreach (var resource in Config.GetApis())
{
context.ApiResources.Add(resource.ToEntity());
}
context.SaveChanges();
}
}
}
}
я скучаю?Весь код одинаковый, класс запуска тоже и т. Д.