using CommonUtil;
|
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc.Filters;
|
using System;
|
|
namespace Link.Api.Filters
|
{
|
/// <summary>
|
/// 异常过滤器
|
/// </summary>
|
public class ExceptionFilter : IExceptionFilter
|
{
|
private const string JSON_RPC = "2.0";
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
public ExceptionFilter()
|
{
|
}
|
|
/// <summary>
|
/// 触发异常
|
/// </summary>
|
/// <param name="context"></param>
|
public void OnException(ExceptionContext context)
|
{
|
LogUtil.Error(context.Exception);
|
|
context.ExceptionHandled = true;
|
|
//判断是否为可控异常
|
if (context.Exception.GetType() == typeof(TopException))
|
{
|
int exceptionCode = ((TopException)context.Exception).Code;
|
context.Result = new OkObjectResult(new
|
{
|
jsonrpc = JSON_RPC,
|
id = Guid.NewGuid().ToString(),
|
error = new
|
{
|
code = exceptionCode,
|
message = context.Exception.Message
|
}
|
});
|
}
|
else
|
{
|
context.Result = new OkObjectResult(new
|
{
|
jsonrpc = JSON_RPC,
|
id = Guid.NewGuid().ToString(),
|
error = new
|
{
|
code = (int)TopResultEnum.ErrorException,
|
message = TopResultEnum.ErrorException.GetDescription()
|
}
|
});
|
}
|
}
|
}
|
}
|