要实现全局异常处理程序,可以按照以下步骤进行操作:
在 ASP.NET Core 项目中,创建一个名为 "GlobalExceptionHandler.cs" 的新类文件。
在 GlobalExceptionHandler 类中,添加以下代码:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Diagnostics;
using Microsoft.AspNetCore.Http;
using System;
public static class GlobalExceptionHandler
{
public static void UseGlobalExceptionHandler(this IApplicationBuilder app)
{
app.UseExceptionHandler(errorApp =>
{
errorApp.Run(async context =>
{
context.Response.StatusCode = StatusCodes.Status500InternalServerError;
context.Response.ContentType = "text/html";
var exceptionHandlerFeature = context.Features.Get();
if (exceptionHandlerFeature != null)
{
var exception = exceptionHandlerFeature.Error;
// 在此处可以进行日志记录或其他处理
await context.Response.WriteAsync("");
await context.Response.WriteAsync("Internal Server Error
");
await context.Response.WriteAsync("Sorry, an error occurred while processing your request.
");
// 输出异常信息
await context.Response.WriteAsync($"{exception.Message}
");
await context.Response.WriteAsync("");
}
});
});
}
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
// 添加全局异常处理程序
app.UseGlobalExceptionHandler();
// ...
}
这样,当应用程序发生异常时,全局异常处理程序将捕获异常并返回自定义的错误页面。
请注意,在示例代码中,异常信息直接以文本形式输出到响应中。根据需求,您可以根据实际情况自定义输出格式和内容,例如使用 JSON 格式返回异常信息,或将异常信息记录到日志文件中等。
上一篇:ASP.NET Core Razor - 从依赖注入的服务进行重定向
下一篇:ASP.NET Core Razor - 文件上传 - RequestFormLimits - antiforgery 令牌无法解密