将IHttpActionResult序列化为JSON会导致异常

时间:2015-06-26 21:28:03

标签: c# json asp.net-web-api

我有一个小的Web API 2应用程序,我正在尝试实现传入请求和传出响应的记录(基本上是通过Fiddler2记录您所看到的HTTP流量)。

在尝试序列化方法的响应时,我遇到的异常是我不知道如何处理。我试过玩JsonSerializerSettings等等。我可能会以完全错误的方式做这件事。非常感谢任何指导。

这是导致异常的代码片段。

var response = Ok(successMessage);
JsonSerializerSettings settings = new JsonSerializerSettings
{
    PreserveReferencesHandling=Newtonsoft.Json.PreserveReferencesHandling.Objects,
    ReferenceLoopHandling = ReferenceLoopHandling.Ignore
};
this.Logging.LogMessage(MessageType.ServiceResponse, JsonConvert.SerializeObject(response, Formatting.Indented, settings));
return response;

例外:

    Newtonsoft.Json.JsonSerializationException: Error getting value from 'ReadTimeout' on 'System.Web.HttpInputStream'. ---> 
System.InvalidOperationException: Timeouts are not supported on this stream.   at System.IO.Stream.get_ReadTimeout()   at GetReadTimeout(Object ) 
at Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(Object target)   --- End of inner exception stack trace --- 
at Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(Object target)

1 个答案:

答案 0 :(得分:0)

响应中是否存在1对多关系?响应是否包含一个列表,并在该列表项中包含一个返回响应的引用?

当构建一个json子节点时,无法引用它们的父节点,在尝试序列化时会有一个无限循环。

构建视图模型并将引用移回父级。只是通过parentid。