2016-11-30 1 views
0

프런트 엔드 (AngularJS)와 백엔드 (C# Web-Api)라는 두 개의 프로젝트가 있습니다. 문제는 프런트 엔드가 API를 쿼리 할 때 (예 : GET localhost/api/Especialistas? rol = XXXX) 500 오류가 발생합니다. 나는 return Ok(especialista)에 도달하기 때문에WebApi 내부 서버 오류

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

이 API가 작동, 다음은 API의 코드입니다.

프런트 엔드

는 API

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

네트워크 콘솔가 요청 200 OK OPTION을 표시하지만, 500 Internal Server Error GET를 조회하려면이 Restangular을 사용하고 있습니다.

GET 요청이 Api에 도달했는지 확인하기 위해 WebApiConfig.cs 파일의 메시지 처리기를 시도했는데 실제로 도달 했으므로 구성 파일을 변경하지 않았으므로 어떤 일이 발생했는지 알 수 없습니다 .

이 문제를 해결하는 방법에 대한 단서는 감사하겠습니다.

답변

1

작업이 성공적으로 호출되었지만 여전히 500 오류가 발생하면 HTTP 응답으로 변환 할 때 especialista 개체의 serialize를 통해 오류가 발생했다고 생각합니다.

아마도 개체 그래프에서 일부 탐색 속성이 순환하는 일부 탐색 속성 때문에 직렬화가 실패 할 수 있습니다. 엔터티 프레임 워크 모델이 아닌 단순한 개체를 반환하는 것이 좋습니다.

는 다음을 시도해보십시오 위의 코드가 작동

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

경우에, 나는 서비스 모델 데이터 모델을 기반으로 채워 져야합니다 "거울"개체를 만드는 것이 좋습니다. 이러한 객체는 데이터 모델 대신 반환되어야합니다.

속성 값 지정의 상용구 코드를 피하기위한 좋은 도우미는 Automapper입니다.

+0

정말 고마워! – CamiloR