webapi使用ExceptionFilterAttribute过滤器
Posted .Neter
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webapi使用ExceptionFilterAttribute过滤器相关的知识,希望对你有一定的参考价值。
文章
public class ApiExceptionFilterAttribute:ExceptionFilterAttribute { public override void OnException(HttpActionExecutedContext actionExcutedContext) { HttpRequestMessage request = actionExcutedContext.Request; string controllerName = actionExcutedContext.ActionContext.ControllerContext.ControllerDescriptor.ControllerName; string actionName = actionExcutedContext.ActionContext.ActionDescriptor.ActionName; string content = request.Content.ReadAsStringAsync().Result; string exceptionMessage = actionExcutedContext.Exception.Message; string exceptionTrace = actionExcutedContext.Exception.StackTrace; string arguments = JsonConvert.SerializeObject(actionExcutedContext.ActionContext.ActionArguments); string url = request.RequestUri.AbsoluteUri; StringBuilder sb = new StringBuilder(); sb.AppendFormat("URL:{0}<br>", url); sb.AppendFormat("Controller:{0}<br>", controllerName); sb.AppendFormat("Action:{0}<br>",actionName); sb.AppendFormat("Arguments:{0}<br>",arguments); sb.AppendFormat("Content:{0}<br>",content); sb.AppendFormat("ExceptionMessage:{0}<br>", exceptionMessage); sb.AppendFormat("ExceptionTrace:{0}<br>", exceptionTrace); actionExcutedContext.Response = new HttpResponseMessage() { Content = new StringContent(sb.ToString()),StatusCode=System.Net.HttpStatusCode.InternalServerError }; //记录日志 sb.Clear(); sb = null; base.OnException(actionExcutedContext); } }
以上是关于webapi使用ExceptionFilterAttribute过滤器的主要内容,如果未能解决你的问题,请参考以下文章