其他分享
首页 > 其他分享> > webapi使用ExceptionFilterAttribute过滤器

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,actionExcutedContext,string,ExceptionFilterAttribute,Content,AppendFormat
来源: https://www.cnblogs.com/fanfan-90/p/12075592.html