#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. Да, я могу войти в блок асинхронного кода. Может быть, использование статусных пакетов с ограничениями сокращено.