webapi filters using ExceptionFilterAttribute

article

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;
             // log 

            sb.Clear (); 
            SB = null ;
             Base .OnException (actionExcutedContext); 
        } 
    }

Guess you like

Origin www.cnblogs.com/fanfan-90/p/12075592.html