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过滤器的主要内容,如果未能解决你的问题,请参考以下文章

webapi

webapi

快速入门系列--WebAPI--01基础

ASP.NET WebApi:如何使用 WebApi HttpClient 通过文件上传执行多部分发布

使用 webApi 和 angularjs 的间接下载链接

WebApi 全局使用filter