0

DataContractSerializer次の構成変更を使用して、デフォルトで XmlSerializer を使用するように ASP.NET Web API を作成しました。

GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true

GlobalConfiguration.Configuration.Formatters.XmlFormatter.Indent = true

Xml シリアライゼーションの問題:

Web API の JSON 応答は、以下の値に対しては正常に機能しますが、XML が要求されると失敗します。

ここに画像の説明を入力

私が試したこと: SupportedEncodingsをXMLSerializerに追加する

GlobalConfiguration.Configuration.Formatters.XmlFormatter
                   .SupportedEncodings.Clear();
GlobalConfiguration.Configuration.Formatters.XmlFormatter
                   .SupportedEncodings.Add(new UnicodeEncoding());

例外処理:

追加してシリアライゼーション例外をキャッチしようとしましたExceptionFilterAttribute

public class ErrorHandlingFilter : ExceptionFilterAttribute 
{
    public override void OnException(
                   HttpActionExecutedContext actionExecutedContext)
    {
           ....handle exception
    }
}

フィルターを次のように登録します

config.Filters.Add(new ErrorHandlingFilter());

フィルターのOnExceptionメソッドは、シリアル化例外を取得したときではなく、ApiController のアクションが明示的な例外をスローしたときに呼び出されますか?

2 つの質問があります

  1. 応答で特殊文字をエンコードする際の問題を回避するにはどうすればよいですか?
  2. これらのシリアル化例外をキャッチするにはどうすればよいですか。
4

0 に答える 0