ASP.NET Core API 自定义全局异常
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
namespace LG.ERP.API.CustomerFilters
{
/// <summary>
/// 自定义异常过滤器
/// </summary>
public class CustomerExceptionFilter : IAsyncExceptionFilter
{
private readonly ILogger<CustomerExceptionFilter> _logger;
public CustomerExceptionFilter(ILogger<CustomerExceptionFilter> logger)
{
_logger = logger;
}
public Task OnExceptionAsync(ExceptionContext context)
{
if (context == null) throw new ArgumentNullException(nameof(context));
// 记录异常日志
_logger.LogError(context.Exception, "未处理的异常:{Message}", context.Exception.Message);
// 设置返回结果
context.Result = new ObjectResult(new
{
Message = "服务器发生错误,请稍后再试。",
Detail = context.Exception.Message
})
{
StatusCode = 500
};
// 标记异常已处理
context.ExceptionHandled = true;
return Task.CompletedTask;
}
}
}
在 Program.cs 文件的控制器中注册
builder.Services.AddControllers(options =>
{
options.Filters.Add<CustomerExceptionFilter>();
});
浙公网安备 33010602011771号