依赖配置参考
创建过滤器
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using Newtonsoft.Json;
using System.Net;
namespace ResultFilter
{
public class ExceptionFilter : IAsyncExceptionFilter
{
public Task OnExceptionAsync(ExceptionContext context)
{
// 如果异常没有被处理
if(!context.ExceptionHandled){
int code = 0;
if (!context.ExceptionHandled)
{
code = 1;
}
// 定义返回类型
var result = new ApiResult<String>
{
Code = code,
Message = context.Exception.Message,
Data = ""
};
context.Result = new ContentResult
{
// 返回状态码为200,表示正常
StatusCode = (int)HttpStatusCode.OK,
// 设置返回格式
ContentType = "application/json",
Content = JsonConvert.SerializeObject(result)
};
// 设置为true,表示异常以及被处理了
context.ExceptionHandled = true;
}
return Task.CompletedTask;
}
}
}
过滤器注册
builder.Services.AddControllers(o => o.Filters.Add(typeof(ExceptionFilter)));