2017-10-26 12 views
0

私たちはREST APIとして使用するASP.NETコアアプリケーションを用意しています。メソッドは[FromBody]MyClass paramを入力として使用します。問題は、クライアントが無効なJSON文字列を送信した場合、inputの値がJSONのシリアル化エラーのためにnullになることです。そのようなエラーをログに記録する方法はありますか?ASP.NETの入力方法コア入力JSONのシリアル化エラー

編集:私はないメソッドごとのアプリケーション全体のソリューションを探しています。..

+1

が重複する可能性をASP.Net 5 MVC 6 - FromBodyを使用してPOSTで無効なJSONメッセージを返す方法?](https://stackoverflow.com/questions/37277427/asp-net-5-mvc-6-how-to-return-invalid- json-message-on-post-using-frombody) –

+0

@Kirk:これは同じ質問ではありません。リンクされた質問は、jsonエラーを呼び出し元に返す方法を尋ね、受け入れられた答えはメソッドごとの基本的な解決方法です。私はそれをアプリケーション全体で捕捉してログに記録しようとしています。 – dstr

+1

あなたが求めているのとまったく同じようにフィルタを使用する方法を説明する、2番目に受け入れられていない答えを読んだことがありますか? –

答えて

0

私はStartup.csでエラーハンドラを追加することでこれを解決しました:[の

services.AddMvc() 
     .AddJsonOptions(options => { 
       options.SerializerSettings.Error = (object sender, Newtonsoft.Json.Serialization.ErrorEventArgs args) => 
       { 
        //Log args.ErrorContext.Error details... 
       }; 
     }); 
+0

はい、同意しますが、LoggerFactoryManager.Init(_)を挿入するとどのようにログに記録されますか。同じConfigureServicesメソッド内にありますか? –

+0

var logger = LoggerFactoryManager.GetLogger (); logger.LogWarning( "入力時にJSONを逆シリアル化できませんでした:" + args.ErrorContext.Error.Message); –

関連する問題