샘플을 다운로드하지 않고도 간단하게 단계를 요약하면 v3의 경우 Microsoft.AspNet.WebApi.Odata, v4의 경우 Microsoft.AspNet.OData가 다운로드됩니다. v3과 v4가 기본 규칙으로 유선으로 시작되면 중복 된 컨트롤러 이름을 찾게됩니다. 여기에서 v3 기본 경로 접두사를 "odata/v3"(필수는 아니지만 권장 됨)으로 변경하고 v4의 경우 기본 경로 접두사를 "odata/v4"로 설정하고 컨트롤러 이름을 MyEntityV4Controller로 변경하십시오. 이 시점에서 경로 속성을 사용하여 오류를 해결하려고 시도하면 http 406 결과가 발생합니다. 대신, 클래스 생성 :
public class CustomControllerRoutingConvention : IODataRoutingConvention
{
public string SelectAction(ODataPath odataPath, HttpControllerContext controllerContext, ILookup<string, HttpActionDescriptor> actionMap)
{
return null;
}
public string SelectController(ODataPath odataPath, HttpRequestMessage request)
{
if (odataPath.EdmType == null)
return null;
var path = odataPath.Segments.OfType<EntitySetPathSegment>().SingleOrDefault();
if (path == null)
{
return null;
}
return path.EntitySetName + "V4";
}
}
을하고 그래서 그것을 사용 :
config.MapODataServiceRoute(
"odatav4",
"odata/v4",
builder.GetEdmModel(),
new DefaultODataPathHandler(),
routingConventions);
을 여기에서 당신을 하나로, OData/V3/MyEntitys 및 하나로, OData/V4/MyEntitys 등을 검색 할 수 있습니다
이 문제와 코드 중복에 대한 ASP.Net 문제에 대한 링크 만 게시 https://aspnetwebstack.codeplex.com/workitem/2184 – Marty