












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>();
});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。