例外ハンドラクラスExceptionAPIFilterを作成し、インターフェイスを継承IExceptionFilterを実装
パブリック クラスExceptionAPIFilter:IExceptionFilter { パブリック ブール AllowMultiple => 真; パブリックタスクExecuteExceptionFilterAsync(HttpActionExecutedContext actionExecutedContext、CancellationToken cancellationToken) { VARの EX = actionExecutedContext.Exception.InnerException?actionExecutedContext.Exception; リターン Task.Run(()=> { ストリングコントローラ名= actionExecutedContext.ActionContext.ControllerContext.ControllerDescriptor.ControllerName; 列 actionNameの=actionExecutedContext.ActionContext.ActionDescriptor.ActionName; ストリング PARAM = actionExecutedContext.Request.Method.ToString()。 // 记录日志 LogFile.WriteErrorLog(DateTime.Now +の文字列 .Format(" 場所:{0} / {1}のParam:{2} UserIP:{3}例外:{4} "、コントローラ名、actionNameの、PARAM、" " 、ex.Message)); ResultUは結果 = 新しい ResultU(偽、999 、ex.Message)を、 ストリング JSON = Newtonsoft.Json.JsonConvert.SerializeObject(結果)。 HttpResponseMessageをhttpResponse = 新しいHttpResponseMessage(); HttpContent httpContent = 新しいStringContent(JSON)。 httpResponse.Content = httpContent。 actionExecutedContext.Response = をhttpResponse。 }); } }
Global.asaxのサインインの例外フィルタOK
// APIグローバル例外フィルタ GlobalConfiguration.Configuration.Filters.Add(新ExceptionAPIFilter());