在 ASP.NET Core 中,可以通过自定义错误处理程序来显示 HTML 错误页面。以下是实现自定义错误处理程序的步骤:
public class CustomExceptionHandler : IExceptionHandler
{
private readonly ILogger _logger;
public CustomExceptionHandler(ILogger logger)
{
_logger = logger;
}
public async Task HandleExceptionAsync(ExceptionHandlerContext context)
{
// 记录日志
_logger.LogError(context.Exception, "An exception occurred.");
// 设置 HTTP 响应状态码
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
context.HttpContext.Response.ContentType = "text/html";
// 加载错误页面
var errorPage = await context.HttpContext.RequestServices.GetService()
.RenderToStringAsync("Error", new ErrorViewModel {
StatusCode = context.HttpContext.Response.StatusCode,
Message = context.Exception.Message
});
// 返回错误页面
await context.HttpContext.Response.WriteAsync(errorPage);
}
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 注册自定义错误处理程序
app.UseExceptionHandler(new ExceptionHandlerOptions
{
ExceptionHandler = new CustomExceptionHandler(app.ApplicationServices.GetService>())
.HandleExceptionAsync
});
// ...其他中间件
}
@model ErrorViewModel
Error @Model.StatusCode
Error @Model.StatusCode
@Model.Message
通过这个方法,我们可以实现在 ASP.NET Core 中显示自定义 HTML 错误页面。