2016-11-30 41 views
0

我有2個項目,一個前端(AngularJS)和一個後端(C#Web-Api)。問題是,當前端查詢api(例如GET localhost/api/Especialistas?rol = XXXX)時,出現500錯誤。這裏是API的代碼:WebApi內部服務器錯誤

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

如果您的操作被成功調用,但仍然收到500錯誤,我認爲該錯誤是由轉換爲HTTP響應時序列化的especialista對象創建的。

很可能,序列化失敗的原因是某些導航屬性會在對象圖中創建循環。建議返回簡單的對象,而不是實體框架模型。

嘗試以下操作:

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

如果上面的代碼工作,我建議建立的服務模式,應根據您的數據模型來填充「鏡子」的對象。應該返回這些對象而不是數據模型。

避免物業價值分配的樣板代碼的好幫手是Automapper

+0

就是這樣,謝謝! – CamiloR