【问题标题】:MVC WebAPI returning 500 error with no informationMVC WebAPI 返回 500 错误,没有任何信息
【发布时间】:2015-11-18 19:35:31
【问题描述】:

我已经有这个问题好几天了(现在已解决,并且为遇到此问题并正在拔头发的任何人提供解决方案)。

在我对使用 MVC4 WebAPI 获取数据的 Silverlight 应用程序进行最新一轮代码更改后,我的一个 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 Framework 调试。这次发生错误时(在 HttpApplication.cs 中)VS 2012 捕获了它。

我的错误:

尽管用这些属性标记了属性,

[XmlIgnore]
[IgnoreDataMember]
[JsonIgnore]

.Net 源正在调用我的一个属性。问题是,它是一个只写属性。我只是添加了

get { return null; }

问题就解决了。

我可能应该先完成检查 3,但我之前遇到此错误的经验表明,尝试序列化我的对象通常是一个错误,这就是为什么当它们正确序列化时我有点头疼并且错误仍然存​​在。

【问题讨论】:

标签: asp.net-web-api


【解决方案1】:

我是如何解决的:

启用 .Net Framework 调试。工具 -> 选项 -> 调试 -> 勾选“启用 .NET Framework 源代码步进”

这一次发生错误时(在 HttpApplication.cs 中)VS 2012 捕获了它。

【讨论】:

    猜你喜欢
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2021-12-16
    • 2014-03-12
    • 1970-01-01
    • 2013-05-18
    相关资源
    最近更新 更多