明確にするために... WebApiConfig を次のように構成します。
config.Formatters.JsonFormatter.SerializerSettings.Binder = new TypeNameSerializationBinder("namespace.{0}, assembly");
config.Formatters.JsonFormatter.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
これにより、派生クラスを基本クラスにバインドできるようになります。また、WebApi がオブジェクトを JSON にシリアル化してクライアントに送信する場合、バインダーは機能しますが、それらをサーバーにポストすると、バインダーは使用されず (BindToType メソッドは呼び出されません)、オブジェクトは基本クラスにバインドされます。
この設定でオブジェクトを手動でシリアライズ/デシリアライズすると、すべて正常に動作します。
何か案は?