2017-12-04 4 views
0

사람을 반환하는 간단한 Odata V4 서비스가 있습니다.C# Odata 네이티브 메타 데이터 사용자 정의

이 서비스는 직접 액세스 할 수 없습니다 :

내 문제는

{ 
    "@odata.context": "http://myFirstServer/$metadata#Person/$entity", 
    "FirstName": "John", 
    "LastName": "Doe", 
    "[email protected]": "#Collection(String)", 
    "Phone": [ 
     "+123456789" 
    ], 
} 

또는

{ 
    "@odata.context": "http://mySecondServer/$metadata#Person/$entity", 
    "FirstName": "John", 
    "LastName": "Doe", 
    "[email protected]": "#Collection(String)", 
    "Phone": [ 
     "+123456789" 
    ], 
} 
: 우리는 서비스 응답에서 실제 최종 서버 URL "@ odata.context"메타 데이터, 그래서 http://myApigeeServer/Person에 대한 호출을 볼 수있는 ('foo는')는 두 가지 반응으로 이어질 수 있습니다

정말 최종 서버 이름을 숨겨야합니다. 그래서 내 질문은 : 그것은 완전히 "@ odata.context"메타 데이터를 제거하거나 그것을 사용자 정의 할 수 있습니까? 필자의 경우 사용자 정의는 Apigee URL로 "@ odata.context"메타 데이터 값을 강요하는 것을 의미합니다.

는 [--- 수정 ----]를

Dylan Nicholson에 의해 제안 된 the link을 바탕으로 (감사합니다!), 실제로는 서비스 URI의 기본 주소를 변경할 수있는 ODataMediaTypeFormatter에 후크 존재한다.

하지만 테스트에서 작동하지 않았습니다. @ odata.context URI에서 작동하도록 관리하지 못했습니다. 따라서 링크에서 링크 및 테스트에 이르기까지 herelencharest의 솔루션은 완벽하게 작동합니다. 각 링크 기본 주소를 다시 쓰는 사용자 지정 URL 도우미를 사용합니다. 너무 잔인한 만약 당신이 사용할 수 있으며, @의 odata.context을 억제하기 위해

+1

을 https://github.com/OData/WebApi/issues/644?를 참조하십시오. –

답변

1

에게 ... 미래에

@Max

를 볼 것 "응용 프로그램/JSON, odata.metadata = 없음"아마도

+0

좋은 해결 방법입니다. Sam에게 감사드립니다. 작동하고 임시로 사용했습니다. 하지만 다소 과격한 점이 있습니다. 모든 메타 데이터를 숨기는 것보다는 링크를 수정하는 편이 더 좋습니다. 편집에서 내가 한 것을 보아라. –