Обновление до. Net -Core 3.1 вызывает аутентифицированные контроллеры до 404 - PullRequest
0 голосов
/ 06 мая 2020

Недавно я обновил свой проект до. net -core 3.1. Я заметил странное поведение всех моих аутентифицированных контроллеров 404.

Я оставил анонимную конечную точку по умолчанию, которую я обычно использую только для проверки что мой api работает. Этот контроллер работает нормально.

[AllowAnonymous]
[Route("api/[controller]")]
public class ValuesController : Controller
{
    //...
}

Кажется, этот контроллер работает нормально, несмотря на то, что он не украшен [ApiController]

Я обнаружил проблему, связанную с в котором указано, что это связано с ApiVersioning

Однако я не вижу способа установить это при запуске. Net -Core 3.1

Я добавил [ApiController] для всех аутентифицированных контроллеров, единственное влияние, которое я увидел, это то, что все мои методы Publi c теперь имеют право на проверку количества параметров, разрешенных для привязки к телу. Все по-прежнему 404

[ApiController]
[Route("api/[controller]")]
public class AccountController : Controller
{
    //...
    HttpPost("ExternalLogin")]
    [AllowAnonymous]
    public IActionResult ExternalLogin(string provider, string entryCode = null, string returnUrl = null)
    {
        //...
    }
}

Как я могу заставить мои контроллеры получать запросы?

1 Ответ

1 голос
/ 06 мая 2020

Если вы перешли с. NET Core 2.2 на 3.1, вам нужно будет настроить класс запуска:

В ConfigureServices: замените services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

на

services.AddControllers();

И в методе настройки: Вместо app.UseMvc();

используйте:

            app.UseRouting();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
...