Я нашел документы о создании пользовательских страниц ошибок шлюза приложений, может быть, это полезно для вас. пользовательские страницы ошибок Как создать пользовательскую страницу ошибок в коде.
Мы также можем обрабатывать ее по коду. Вот мое предложение.
Ошибки, такие как 500, мы можем обработать с помощью фильтра ,
public class ErrorPageFilter : ActionFilterAttribute
{
public override void OnResultExecuted(ResultExecutedContext context)
{
if (context.HttpContext.Response.StatusCode == 500)
{
context.HttpContext.Response.Redirect("error/500");
}
base.OnResultExecuted(context);
}
}
[ErrorPageFilter]
public abstract class PageController
{}
Для проекта .netcore mvc, он также поставляется с конвейерной обработкой страниц ошибок при его создании.
В файле startup.cs,
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//dev env show error page
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
//prod env show custom page
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
}
//In HomeController has this function,
//You just replace cshtml file by you want
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
Ошибки типа 404, мы можем ,
В файле startup.cs найти функцию настройки, затем добавить следующий код,
app.UseStatusCodePagesWithReExecute("/error/{0}");
Затем добавьте контроллер ошибок,
public class ErrorController : Controller
{
/// <summary>
/// In content in {0} is error code
/// </summary>
/// <returns></returns>
[Route("/error/{0}")]
public IActionResult Page()
{
//Jump to 404 error page
if (Response.StatusCode == 404)
{
return View("/views/error/notfound.cshtml");
}
return View();
}
}
Обратите внимание, если вы используете ErroeController (обработать ошибку 404), пожалуйста, не используйте app.UseExceptionHandler("/Home/Error")
, вам просто нужно обработать ошибку в контроллер.