По умолчанию сервер возвращает код состояния HTTP 404 в качестве ответа на запросы, которые не обрабатываются каким-либо промежуточным программным обеспечением (маршрутизация атрибутов / соглашений является частью промежуточного программного обеспечения MVC).
В общем, что вы всегда можете сделатьзаключается в добавлении некоторого промежуточного программного обеспечения в начале конвейера, чтобы перехватывать все ответы с кодом состояния 404 и выполнять пользовательскую логику или изменять ответ.
На практике вы можете использовать существующий механизм, предоставляемый ASP.NET Core, называемый StatusCodePages
* 1007 промежуточного слоя *.Вы можете зарегистрировать его непосредственно как необработанное промежуточное программное обеспечение с помощью
public void Configure(IApplicationBuilder app)
{
app.UseStatusCodePages(async context =>
{
context.HttpContext.Response.ContentType = "text/plain";
await context.HttpContext.Response.WriteAsync(
"Status code page, status code: " +
context.HttpContext.Response.StatusCode);
});
//note that order of middlewares is importante
//and above should be registered as one of the first middleware and before app.UseMVC()
Промежуточное программное обеспечение поддерживает несколько методов расширения, например, следующие (различие хорошо объяснено в этой статье ):
app.UseStatusCodePages("/error/{0}");
app.UseStatusCodePagesWithRedirects("/error/{0}");
app.UseStatusCodePagesWithReExecute("/error/{0}");
где "/error/{0}"
- это шаблон маршрутизации, который может быть любым, и его параметр {0}
будет представлять код ошибки.
Например, для обработки 404 ошибок вы можете добавить следующее действие
[Route("error/404")]
public IActionResult Error404()
{
// do here what you need
// return custom API response / View;
}
или общее действие
[Route("error/{code:int}")]
public IActionResult Error(int code)