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;
}
}
}