微软文档
https://docs.microsoft.com/en-us/aspnet/web-api/overview/error-handling/exception-handling
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http.Filters;
namespace ITExplode.Web.ITELib.Exception
{
/// <summary>
/// 全局异常过滤器
/// </summary>
/// <!-- 2019-8-22 16:18:10 添加 -->
public class ExceptionDo : System.Web.Http.Filters.IExceptionFilter
//public class ExceptionDo : System.Web.Http.Filters.ExceptionFilterAttribute
{
//System.Web.Http.Filters.ExceptionFilterAttribute
//public override void OnException(HttpActionExecutedContext context)
//{
// var ex = context.Exception.InnerException ?? context.Exception;
// if (ex != null)
// {
// //异常记录日志 2019-8-28 13:55:45 添加
// Common.LogHelpter.AddLog(ex.ToString());
// string msg = ex.Message;
// var response = new HttpResponseMessage(HttpStatusCode.NotImplemented);
// response.Content = new StringContent(msg);
// context.Response = response;
// }
//}
public bool AllowMultiple => true;
public Task ExecuteExceptionFilterAsync(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken)
{
var ex = actionExecutedContext.Exception.InnerException ?? actionExecutedContext.Exception;
return Task.Run(() =>
{
//异常记录日志到本地 2019-8-28 13:55:45 添加
Common.LogHelpter.AddLog(ex.ToString());
string msg = ex.Message;
Result result = new Result(200, msg);
string json = Newtonsoft.Json.JsonConvert.SerializeObject(result);
HttpResponseMessage httpResponse = new HttpResponseMessage();
HttpContent httpContent = new StringContent(json);
httpResponse.Content = httpContent;
actionExecutedContext.Response = httpResponse;
});
}
}
}
在Global.asax启动配置全局过滤
public class Global : HttpApplication
{
protected void Application_Start()
{
//2019-8-22 16:19:08 全局异常过滤
GlobalConfiguration.Configuration.Filters.Add(new ExceptionDo());
}
}