사람을 반환하는 간단한 Odata V4 서비스가 있습니다.C# Odata 네이티브 메타 데이터 사용자 정의
이 서비스는 직접 액세스 할 수 없습니다 :
- 은 즉 http://myApigeeServer/Person
- 다음 Apigee이 http://myLoadBalancer/Person
- 으로 즉, 부하 분산 장치에 가리키는에 마지막으로 실제로 두 개의 서버가, Apigee를 통해 액세스 할 수 로드 밸런서 가상 IP 뒤에서 http://myFirstServer/Person 및 http://mySecondServer/Person
내 문제는
{
"@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에서 작동하도록 관리하지 못했습니다. 따라서 링크에서 링크 및 테스트에 이르기까지 here 및 lencharest의 솔루션은 완벽하게 작동합니다. 각 링크 기본 주소를 다시 쓰는 사용자 지정 URL 도우미를 사용합니다. 너무 잔인한 만약 당신이 사용할 수 있으며, @의 odata.context을 억제하기 위해
을 https://github.com/OData/WebApi/issues/644?를 참조하십시오. –