首页 > 代码库 > ASP.NET Core中显示自定义错误页面

ASP.NET Core中显示自定义错误页面

在 ASP.NET Core 中,默认情况下当发生500或404错误时,只返回http状态码,不返回任何内容,页面一片空白。

如果在 Startup.cs 的 Configure() 中加上 app.UseStatusCodePages(); ,500错误时依然是一片空白(不知为何对500错误不起作用),404错误时有所改观,页面会显示下面的文字:

Status Code: 404; Not Found 

如果我们想不管500还是404错误都显示友好的自定义错误页面,该如何实现呢?请看下面的分解。

对于500错误,我们改用 app.UseExceptionHandler() 进行截获;

对于404错误,我们用 app.UseStatusCodePages() 的增强版 app.UseStatusCodePagesWithReExecute() 进行截获;

然后转交给显示自定义错误页面的URL进行处理。

app.UseExceptionHandler("/errors/500");app.UseStatusCodePagesWithReExecute("/errors/{0}");

接着针对上面的URL,在 MVC Controller 中实现之。

public class ErrorsController : Controller{    [Route("errors/{statusCode}")]    public IActionResult CustomError(int statusCode)    {        if(statusCode == 404)        {            return View("~/Views/Errors/404.cshtml");        }        return View("~/Views/Errors/500.cshtml");    }        }

ASP.NET Core中显示自定义错误页面