ASP.NETは、グローバルな例外フィルタをWEBAPI

例外ハンドラクラス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());

  

おすすめ

転載: www.cnblogs.com/shenghuotaiai/p/12311437.html