我已经解决了这个问题好几天了(现在已经修复了,解决了这个问题并解决了这个问题的人的问题)。
在我的最新一轮代码更改为使用MVC4 WebAPI获取数据的Silverlight应用程序之后,我遇到了一个返回IQueryable<oneofmyclasses>
的HttpGet操作的问题。使用Fiddler2来观察请求,我可以看到我收到内部服务器错误(500),没有正文可以解释原因。我的行动中没有收到任何错误。
检查1:我确认我的操作确实已到达return collection.AsQueryable();
行而没有错误。这是
检查2 我验证我的数据是使用此代码序列化为JSON而没有错误(g是我的收藏):
var json = new JsonMediaTypeFormatter();
json.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.Objects;
ObjectContent<IEnumerable<Model.MenuGroup>> responseContent = new ObjectContent<IEnumerable<Model.MenuGroup>>(g, json);
MemoryStream ms = new MemoryStream();
responseContent.CopyToAsync(ms).Wait();
ms.Position = 0;
var sr = new StreamReader(ms);
var str = sr.ReadToEnd();
这也有效。我也使用XML格式化器测试过它,尽管我很确定它只使用过JSON(不能太小心)。
检查3:启用.Net Framework调试。这次发生错误时(在HttpApplication.cs中)VS 2012发现了它。
我的错误:
尽管已使用这些属性标记了该属性,
[XmlIgnore]
[IgnoreDataMember]
[JsonIgnore]
<。> .Net Source正在调用我的一个属性。捕获,这是一个只写的属性。我只是添加了
get { return null; }
问题解决了。
我可能应该先完成Check 3,但我以前使用此错误的经验表明,尝试序列化我的对象通常是一个错误,这就是为什么当他们正确序列化时我有点头疼的原因并且错误仍然存在。
答案 0 :(得分:8)
我是如何解决的:
启用.Net Framework调试。工具 - &gt;选项 - &gt;调试 - &gt;选中“启用.NET Framework源步进”
这次发生错误时(在HttpApplication.cs中)VS 2012发现了它。