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

但是,在我们的 APIController 中,它处理 HTTP 请求并具有如下方法:

[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 回答