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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM