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