記事
パブリック クラスApiExceptionFilterAttribute:ExceptionFilterAttribute { 公共 オーバーライド ボイドonExceptionを(HttpActionExecutedContext actionExcutedContext) { HttpRequestMessageリクエスト = actionExcutedContext.Request。 文字列コントローラ名= actionExcutedContext.ActionContext.ControllerContext.ControllerDescriptor.ControllerName。 文字列 actionNameの= actionExcutedContext.ActionContext.ActionDescriptor.ActionName。 文字列の内容= request.Content.ReadAsStringAsync()結果。 ストリングexceptionMessage = actionExcutedContext.Exception.Message。 文字列 exceptionTrace = actionExcutedContext.Exception.StackTrace。 文字列引数= JsonConvert.SerializeObject(actionExcutedContext.ActionContext.ActionArguments)。 文字列の URL = request.RequestUri.AbsoluteUri。 StringBuilderのSB = 新しいStringBuilderの(); sb.AppendFormat(" URL:{0} <BR> " 、URL); sb.AppendFormat(" コントローラー:{0} <BR> " 、コントローラ名)。 sb.AppendFormat("処置:{0} <BR> "actionNameの); sb.AppendFormat(" 引数:{0} <BR> " 引数); sb.AppendFormat(" コンテンツ:{0} <BR> 」、コンテンツ); SB .AppendFormat(" exceptionMessage:{0} <BR> " 、exceptionMessage); sb.AppendFormat(" exceptionTrace:{0} <BR> " 、exceptionTrace); actionExcutedContext.Response = 新しい HttpResponseMessage(){内容= 新しい StringContent(SB .ToString())、のStatusCode =} System.Net.HttpStatusCode.InternalServerError; // ログ sb.Clearを(); SB = NULL ; ベース.OnException(actionExcutedContext); } }