3
我们使用JSON.NET来序列化自定义对象。我写了执行我们的自定义对象的JSON序列化成功的一个单元测试:JSON.NET序列化在ApiController中表现不同
// 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项目中表现不同,而它在单元测试中起作用?提前致谢。
1)你可以共享例外的完整'ToString()'吗? 2)确保你正确设置了你的全局'JsonSerializerSettings',参见http://stackoverflow.com/questions/13274625/how-to-set-custom-jsonserializersettings-for-json-net-in-mvc-4- web-api或http://stackoverflow.com/questions/28552567/web-api-2-how-to-return-json-with-camelcased-property-names-on-objects-and-the – dbc
谢谢,我didn直到你指出(通过链接),这个项目本质上是使用JSON.NET。 1)由于JSON.NET通过NuGet包进行调试,因此使用JSON.NET源代码进行调试非常困难,因为我无法卸载NuGet包而无需处理其他相关包密钥的纠结,从而使其作为ASP .NET Web应用程序。 2)感谢您的链接。试图调整全球设置,如问题所示,但无济于事。 “System.InvalidCastException”类型的第一个机会异常仍然是相同的。有任何想法吗? –
为了澄清我对上述1)的回应,无需调试源代码,我看不到错误的详细信息。 –