Получить ответ (OData) от другого контроллера в API-контроллере - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть контроллер API, который вызывает экземпляры ODataController для получения данных. Насколько я понял, я могу сделать это путем создания экземпляра контроллера, вызова метода Get() и последующего применения атрибута EnableQueryAttribute.

string ODataQuery = "/odata/entity?$filter=...&$top=1";

// Get the queryable
DataController dc = new DataController();
IQueryable queryable = dc.Get();

// Get the EdmModel
IEdmModel model = WebApiConfig.GetEdmModel();

// constructing requirements for OData query
HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, reportRequest.DataUriDecoded);
ODataQueryContext ctx = new ODataQueryContext(model, typeof(Medizinprodukte), null);
requestMessage.Properties[HttpPropertyKeys.HttpConfigurationKey] = new HttpConfiguration();
ODataQueryOptions queryOptions = new ODataQueryOptions(ctx, requestMessage);

// Apply OData Query
EnableQueryAttribute enableQuery = new EnableQueryAttribute();
var result = enableQuery.ApplyQuery(queryable, queryOptions);

Построение ODataQueryOptions завершается неудачей с исключением

"No non-OData HTTP route registered."

Полагаю, это восходит к тому, как я построил ODataQueryContext, передав NULL в качестве параметра ODataPath. К сожалению, я не могу найти рабочий способ создания экземпляра ODataPath, который запрашивался ранее, но разрешен только для более старой версии OData .

Есть идеи, как это решить?

...