xXxRevolutionxXx Ответов: 1

Проблема относительно ASP.NET основные роли пользователей


- Привет! Я пытаюсь добавить одного модератора в свой список ASP.NET веб-сайт Core 2.0. Все остальные пользователи будут простыми пользователями, кроме этого. Итак, в основном мне нужны две роли: одна называется пользователь, а другая-модератор. До сих пор я придумал решение, которое приходит со странной ошибкой. Проблема в том, что при первом вызове await (мой метод асинхронен) метод ничего не делает, кажется, что он застрял там, хотя мой сайт успешно запускается. Если бы кто-нибудь мог помочь мне с этим, я был бы рад.

Что я уже пробовал:

То, что я сделал до сих пор, - это создание метода в классе Startup моего проекта для создания моих ролей. Затем я вызываю этот метод из метода Configure класса Startup. Это и есть метод:

private async Task CreateRoles(IServiceProvider serviceProvider)
{
    //Initialize role manager
    var roleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();

    //We get if the moderator role already exists (This is exactly where the method is getting stuck)
    var moderatorRoleExists = await roleManager.RoleExistsAsync(Roles.Moderator);
    //We get if the user role already exists
    var userRoleExists = await roleManager.RoleExistsAsync(Roles.User);

    // if the moderator role doesn't exist
    if (!moderatorRoleExists)
    {
        //create the role and seed them to the database:
        await roleManager.CreateAsync(new IdentityRole(Roles.Moderator));
    }

    // if the moderator user doesn't exist
    if (!userRoleExists)
    {
        //create the role and seed them to the database:
        await roleManager.CreateAsync(new IdentityRole(Roles.User));
    }
}


И вот как я называю его из метода Configure:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider)
{
    if (env.IsDevelopment())
    {
        app.UseBrowserLink();
        app.UseDeveloperExceptionPage();
        app.UseDatabaseErrorPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }

    app.UseStaticFiles();

    app.UseAuthentication();

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });

    CreateRoles(serviceProvider);
}

1 Ответов

Рейтинг:
1

xXxRevolutionxXx

Мне действительно удалось найти решение. Решение заключается в использовании метода Wait при вызове метода CreateRoles. Так что звонок должен быть именно таким:

CreateRoles(serviceProvider).Wait();