У меня следующая ситуация:
- ASP. NET Core 2 обслуживает запросы api на
/api/*
- ASP. NET Core 2 обслуживает запросы работоспособности на
/health
- ASP. NET Запросы прокси сервера Core 2 на
/svc/*
- ASP. NET Core 2, обслуживающие SPA на
/app
ИЛИ /
(если вы от go до example.com
, он будет обслуживать файлы из папки /app/
.
Теперь, если кто-то запрашивает сущность, которая не существует, выдается исключение. обрабатывается следующим образом в Startup.cs
app.UseExceptionHandler("/error");
ErrorController обрабатывает эти исключения и возвращает такие вещи, как NotFound()
, BadRequest()
, et c. В конце , это все ответы JSON.
Теперь, если бы вы перешли на go URL-адрес /hshfdhfgh
, это привело бы к пустой странице 404, потому что ничего не соответствует. Но что я хотел бы сделать чтобы иметь возможность добавить несколько пользовательских HTML представлений для страниц с ошибками. Возможно, с помощью Razor Pages или чего-то еще.
Я просмотрел это, и он вам нужен рекомендуется использовать метод UseExceptionHandler("/error")
, чтобы вы могли вернуть некоторые представления. Но это противоречило бы моим JSON ответам!
Единственное, что я могу придумать, это что-то вроде:
if request does not start with /health, /svc/, /, /app or /api/
app.UseExceptionHandler("/error/404");
else
app.UseExceptionHandler("/error");
Но это кажется очень хакерским. Есть ли другой способ?
И какой был бы лучший / самый простой способ добавить поддержку бритвы в мой проект? в настоящее время его нет.