using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace LangGuan.Middleware { /// /// 异常处理中间件 /// public class CustomerExceptionFilter : IAsyncExceptionFilter { /// /// 日志 /// public ILogger _logger; /// /// 构参 /// /// public CustomerExceptionFilter(ILoggerFactory loggerFactory) { _logger = loggerFactory.CreateLogger(); } /// /// 重写 /// /// /// public Task OnExceptionAsync(ExceptionContext context) { if (context.ExceptionHandled == false) { var json = new { cdoe = -1, msg = context.Exception.Message, data = context.Exception.Data }; context.HttpContext.Response.StatusCode = 400; context.Result = new JsonResult(json); } _logger.LogError($"请求出现异常,地址:{context.HttpContext?.Request?.Path},请求方式:{context.HttpContext.Request.Method},异常信息:{context.Exception.Message}"); //记录异常已经处理 context.ExceptionHandled = true; return Task.CompletedTask; } } }