我一直有这个问题好几天了(现在已解决,解决方案注意到任何人遇到此问题,并拔出他们的头发)。MVC WebAPI返回500错误,没有任何信息
当我的最新一轮代码更改为我的Silverlight应用程序使用MVC4 WebAPI进行数据操作后,我的一个HttpGet操作返回IQueryable<oneofmyclasses>
。使用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框架调试。这次当VS 2012发现错误时(在HttpApplication.cs中)发现了它。
我的错误:
尽管已经标有这些属性的属性,
[XmlIgnore]
[IgnoreDataMember]
[JsonIgnore]
的净源在呼唤着我的属性之一得到。该捕获,它是一个只写属性。我简单地加了
get { return null; }
并且问题解决了。
我可能应该刚刚完成检查3首先,但我以前的经验,这个错误已经表明它通常是一个错误,试图序列化我的对象,这就是为什么我有一个头抓手,当他们做序列化正确和错误仍然存在。
很高兴你能弄明白。你应该写下解决它的支票作为答案。 :) –
http://stackoverflow.com/questions/10944938/asp-net-web-api-non-descriptive-500-internal-server-error/34352049#34352049可能会有所帮助。 – GGleGrand