ASP. NET Core 3.0 в бесконечной петле перенаправления - PullRequest
0 голосов
/ 13 февраля 2020

Я недавно обновил существующее ASP. NET Core 2.2 веб-приложение до версии 3.0. Все компилируется. Мы используем Azure ADB2 C для аутентификации. Ранее пользователь направлялся на страницу входа и после ввода своих учетных данных переходил на страницу по умолчанию.

После обновления до ASP. NET Core 3.0, однако, после того, как они были перенаправлены на страницу входа, приложение переходит в бесконечное направление l oop.

Я могу правильно войти в систему, используя старую версию приложения (в которой все еще используется ASP. NET Core 2.2), поэтому это не Azure ADB2 C конфигурация. Это может быть неверная конфигурация с маршрутизацией в приложении ASP. NET Core 3.0.

Вот моя начальная конфигурация.

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc(option => option.EnableEndpointRouting = false);

    services.AddAuthentication(sharedOptions =>
    {
        sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
    })
    .AddAzureAdB2C(options => Configuration.Bind("AzureAdB2C", options))

    //ensure the user must be authenticated before they can access any of the pages from the app
    services.AddMvc()
        .AddRazorPagesOptions(options => { options.Conventions.AuthorizeFolder("/"); });
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseMvcWithDefaultRoute();

    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    { 
        app.UseExceptionHandler("/Error");
    }

    app.UseAuthentication();
}

Большая часть этого кода осталась неизменной и работала корректно при работе под ASP. NET Core 2.2. , Поскольку я обновился до ASP. NET Core 3.0, он переходит в бесконечное направление l oop.

Я не вижу, что может быть причиной проблемы.

1 Ответ

2 голосов
/ 14 февраля 2020

Порядок вашего промежуточного программного обеспечения неправильный. app.UseMvcWithDefaultRoute(); необходимо разместить после app.UseAuthentication();

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
   //...
   app.UseAuthentication();
   app.UseMvcWithDefaultRoute();
}
...