JSON.NET を使用してカスタム オブジェクトをシリアル化しています。カスタム オブジェクトの JSON シリアル化を正常に実行する単体テストを作成しました。
// Generate custom object...
var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto }; // Serializing objects referred to by abstract type, see comment at http://www.tomdupont.net/2014/04/deserialize-abstract-classes-with.html
var json = JsonConvert.SerializeObject(object, settings);
// ...Deserialize object and compare are equal
ただし、HTTP 要求を処理し、次のようなメソッドを持つ APIController では:
[HttpPost]
public ActionResult ProfileFile()
{
// Code to handle HTTP request
}
同じ方法で生成されたカスタム オブジェクトに対して同じシリアル化操作を実行すると、シリアル化さSystem.InvalidCastException
れるカスタム オブジェクト内のカスタム オブジェクトのストリームが生成されます (これらはすべて、JSON.NET 属性でタグ付けされており、独自の合格ユニット テストを持っています)。
単体テストでは動作するのに、Web プロジェクトでは動作が異なる原因は何ですか? 前もって感謝します。