3

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 プロジェクトでは動作が異なる原因は何ですか? 前もって感謝します。

4

1 に答える 1

0

シリアル化しようとしているオブジェクトの正確な内容を知らなければ、正確な解決策を提供することは困難です。ただし、私があなたの状況にあった場合、カスタム オブジェクトを表す基本的なクラスを作成し、それをシリアル化しようとします。このエラーが引き続き発生する場合は、クラスのさまざまなプロパティにJsonIgnore属性を追加して、実際にこのエラーの原因となっているプロパティを確認します。これにより、問題を絞り込むことができます。

于 2015-07-10T20:02:34.063 に答える