2017-09-06 10 views
0

OData를 호출 할 때 클라이언트에서 NULL (404 찾을 수 없음)을 처리하는 방법을 알 수없는 것처럼 보입니다. 특정 엔티티에 대한 함수.OData 서비스 4.x가있는 Microsoft OData 클라이언트 6.x가 클라이언트에서 NULL 반환 (404 찾을 수 없음)을 처리합니다.

예는>와 같은 전화 서비스는 "Context.Objects.ByKey (1) .SomeFunction(). GetValue()는"
나는 서비스에서 "NULL"을하고 싶지만 대신 클라이언트에서 그것을 찾을 수 없음 (404)를 던졌습니다 예외.

"NULL"을 반환하도록 서비스를 변경하면 서버에서 serialization 예외가 발생하고 "OK (null)"을 반환하도록 서버에 알리는 경우에도 serialization 예외가 발생합니다. 여기

컨트롤러

[HttpGet] 
public IHttpActionResult SomeFunction([FromODataUri] int key) 
{ 
    string something = null; 

    // Do some check and adjust the variable "something" 

    if (string.IsNullOrWhiteSpace(something)) 
    { 
     return NotFound(); 
    } 
    else 
    { 
     return Ok(something); 
    } 
} 

을 위해 서버 코드 그리고 여기

builder.EntityType<SomeObject>().Function("SomeFunction").Returns<string>(); 

내가에서 null 값을 처리하는 "적절한"방법을 찾을 수가 없습니다 WebApiConfig 코드를입니다 Microsoft OData 클라이언트를 사용할 때 odata 서비스.

어쩌면 클라이언트 "ReceivingResponse"이벤트에 연결하여 404를 처리 할 수없는 방법이 있습니까? 모든 제안 ...

답변

0

OData 클라이언트의 기본 동작은 OData 서비스가 404 파일을 찾을 수 없을 때 예외를 throw하는 것입니다.

이 문제를 해결하려면 "IgnoreResourceNotFoundException"이라는 OData 클라이언트 생성 코드의 특성이 있습니다.
이 속성을 true로 설정하면 예외가 발생하지 않습니다.