【问题标题】:Web API error 500 from method来自方法的 Web API 错误 500
【发布时间】:2016-07-17 00:56:16
【问题描述】:

我有一个 Angularjs 前端和一个 Web API 后端。

当返回的对象包含列表时,我从方法中收到错误 500。当列表不存在时没问题:

如果我返回这样的对象,则没有错误:

var myObj = new { name1 = value1, name2 = value2};
return myObj;

但是对于以下我得到了错误 500:

var q = from p in db.SomeThing select p;
var MyObj =  new { name1 = value1, name2 = value2, name3 = q.ToList()};

一些错误 500:

var q = from p in db.SomeThing select p;
var MyObj =  new { name1 = value1, name2 = value2, name3 = q};

可能出了什么问题?

【问题讨论】:

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


    【解决方案1】:

    db.SomeThingmy 返回的实体具有在序列化期间执行时导致异常的导航属性。尝试选择一个匿名对象而不是p,看看是否能解决您的问题。

    var q = from p in db.SomeThing 
            select new { 
                property1 = p.property1, 
                property2 = p.property2,
                //other properties
            };
    

    【讨论】:

    • 这正是问题所在。谢谢!
    【解决方案2】:

    错误在于您的 LINQ 查询 - 而不是代码。您需要启用断点 - 选择 Debug / Exceptions... 并检查项目 [] Common language runtime。然后当程序抛出异常时,它会在异常行处中断。您将知道如何修复您的查询。 或者您可以在此处发布您的例外情况。

    编码愉快。

    【讨论】:

    • 您好,代码流程正常,没有错误...仅当 name3 的结果在返回的对象中时,我才收到错误 500。
    • 可以发送异常吗?它应该是详细的——比如 name3 不能被序列化。
    • 您好,请参阅 Nkosi 的回答。返回匿名对象的问题已解决。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    相关资源
    最近更新 更多