Перенаправление 404 и 500 ошибок в ASP.NET Основной MVC

#c# #asp.net-core-mvc

Вопрос:

Я пытаюсь получить 404 и 500 ошибок для перенаправления на мою домашнюю страницу.

До сих пор у меня есть это Startup.cs , которое работает нормально, но перенаправляет все коды ошибок >=400 (я хочу обрабатывать плохие запросы по-другому):

 app.UseStatusCodePagesWithRedirects("/?error={0}");
 

Все, что я читаю, говорит мне, что это ответ:

 app.Use(async (ctx, next) =>
{
    await next();
    if ((ctx.Response.StatusCode == 404 || ctx.Response.StatusCode == 500) amp;amp; !ctx.Response.HasStarted)
    {
        ctx.Request.Path = "/?error="   ctx.Response.StatusCode;
        await next();
    }
});
 

Но это не перенаправляет, мне просто предоставляется пустая страница 404 и я остаюсь на выдуманном URL-адресе, который я ввел.

При включенной точке останова ctx.Request.Path = ... я вижу, что код сбит; он просто не перенаправляется.

Есть идеи, что я делаю не так?

Комментарии:

1. Вы поместили UseStatusCodePagesWithRedirects перед блоком асинхронного кода? У меня есть копия вашего кода в моем проекте, он может перенаправляться на локальный хост:5001/?ошибка=500

2. Нет, убрал эту строку в пользу нового кода — я предполагаю, что это правильно

3. Да, я могу войти в блок асинхронного кода. Может быть, использование статусных пакетов с ограничениями сокращено.