ODataController 대신 ApiController에서 상속 한 컨트롤러의 메서드에 OData v4 쿼리 지원을 추가하는 데 어려움을 겪고 있습니다. 솔루션에 실제로 작동하는 OData 모델이 있지만 실제로 모델에 속하지 않는 일부 끝 점이 있지만 쿼리의 힘이 유용합니다.WebApi ApiController에서 OData v4 쿼리 사용
저는 IQueryable을 반환하고 EnableQuery를 사용할 수 있다고 제안하는 기사를 보았습니다.
public class TestController : ApiController
{
[HttpGet]
[EnableQuery]
public IQueryable<TestObject> Events()
{
var result = new[] { new TestObject { Id = "1" } }.AsQueryable();
return result;
}
}
public class TestObject
{
public string Id { get; set; }
}
가 내가 돌아올 모든 호출/시험/이벤트가 가능한 406 아니, 난 보통 I를 의미 중 하나로, OData를 다루는 많은으로 실행했습니다 뭔가 : 여기
내 샘플 코드 OData 프레임 워크가 좋아하지 않는 것을 반환합니다. 나는 프레임 워크에서 더 이상 정보를 얻을 수 없었습니다 (필자는 생각하지 못했습니다). 왜 그것이 마음에 들지 않는지, 과거에 시행 착오를 통해서만 해결할 수 있었던 것입니다.누구나이 설정이 작동하고 있습니까? 그렇다면 어떻게됩니까?
또는 406 응답 디버깅에 대한 제안 사항이 있습니까?
편집 : 알고 보니 있도록
확인 범인 되니라의 코드가 사용자 정의 ODataMediaTypeFormatter를 등록하고 그 과정에서 다른 모든 포맷터를 삭제했다 시작합니다.
문제 코드를 제거한 후 효과가있었습니다.
WebApi가 실제로 어딘가에서 406 오류가 발생했는지 기록하고 싶습니다.
가 어떻게 경로를 선언? – nlips
나는 컨트롤러/액션의 규칙을 사용했다. 그것은 EnableQuery 제거하면 잘 작동합니다. – Mant101
Get()에 대한 작업 이름 Events() 변경이 가능합니까? – eoghank