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 つの質問があります
- 応答で特殊文字をエンコードする際の問題を回避するにはどうすればよいですか?
- これらのシリアル化例外をキャッチするにはどうすればよいですか。