WebAPI では、バリデーション プラクティスを台無しにしている矛盾に気付きました。xml で POST を使用して不適切なボディ/ペイロードを送信すると、逆シリアル化が失敗し、null ポインターが返されます。JSON で不正なボディ/ペイロードを送信すると、代わりに空のオブジェクトが返されます。それは誤解を招くものであり、私はそれが好きではありません。失敗したjsonのデシリアライズでヌルポインタを強制する方法はありますか??
更新: 逆シリアル化の問題はありません。DataContractSerializer と Json.net シリアライザーの違いと思われる動作の問題があります。xml が逆シリアル化に失敗すると、ペイロードは null になります。ただし、Json がデシリアライズに失敗すると、予想されるペイロードのデフォルト インスタンスをインスタンス化しているように見えます。
不適切な xml ペイロードの例:
不正な json ペイロードを使用した同じ呼び出しの例 (ペイロードは null ではなく、ペイロード クラスの既定のインスタンスです)