WebApi内部服务器错误

时间:2016-11-30 14:58:28

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

我有2个项目,一个是前端(AngularJS),一个是后端(C#Web-Api)。问题是,当前端查询api时(例如GET localhost / api / Especialistas?rol = XXXX),我得到500错误。以下是API的代码:

public IHttpActionResult GetEspecialista(string rol)
{
    Especialista especialista = db.Especialistas.First( e=> e.Rol == rol);
    if (especialista == null)
    {
        return NotFound();
    }
    return Ok(especialista);
}

API正在运行,因为我到达了return Ok(especialista)

前端正在使用此Restangular来查询API

Restangular.one("Especialistas?rol=XXXX").get()

网络控制台显示请求200 OK OPTION,但500 Internal Server Error GET

我在WebApiConfig.cs文件中尝试了一个消息处理程序,以检查GET请求是否到达Api,并且确实已到达它,所以我不知道发生了什么,因为我没有更改任何配置文件。

如何解决此问题的任何线索将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:1)

如果您的操作成功调用,但仍然收到500错误,我认为错误是在转换为HTTP响应时通过序列化especialista对象创建的。

最有可能的是,序列化失败是因为某些导航属性会在对象图中创建循环。建议返回简单对象,而不是实体框架模型。

尝试以下方法:

var retObj = new { Prop1 = especialista.Prop1, Prop2 = especialista.Prop2 };
return Ok(retObj);

如果以上代码有效,我建议创建应根据您的数据模型填充的服务模型“镜像”对象。应返回这些对象而不是数据模型。

避免属性值赋值的样板代码的好帮手是Automapper