2015-09-15 3 views
2

Как удалить атрибут asp.net odata.metadata в odatacontroller.удалить Odata.metadata в asp.net web api OdataController

У меня есть следующий код:

public IHttpActionResult GetCompanyViewModels(ODataQueryOptions<CompanyViewModel> queryOptions) 
    { 
     IQueryable<CompanyViewModel> result = companiesService.GetCompanies(); 

     return Ok<IEnumerable<CompanyViewModel>>(result);   
    } 

, который возвращает это.

"odata.metadata": "http://localhost:63447/odata/$metadata#CompanyViewModels", 
    "value":[ 
    { 
    "Id": 1, 
    "CompanyName": "Company1" 
    }, 
    { 
    "Id": 2, 
    "CompanyName": "Company2" 
    } 
    ] 

Как удалить часть «odata.metadata».

Я попытался удалить «MetadataRoutingConvention» из конвенций, но он не имеет эффекта. Просто делает ссылку недоступной.

+0

Вы нашли ответ? У меня та же проблема – Ehsan

+0

@Ehsan Смотрите мой комментарий ниже – Jordan

ответ

3

Добавить опцию $format=application/json;odata.metadata=none при запросе может сделать odata.metadata (на самом деле должен быть odata.context в соответствии со спецификацией odata) не отображается в полезной нагрузке. Например:? http://services.odata.org/V4/Northwind/Northwind.svc/Customers $ = формат приложения/JSON; odata.metadata = нет

MetadataRoutingConvention специально используется для генерации отклика ~/$metadata. Вот почему удаление этого файла сделает ваши метаданные http://localhost:63447/odata/ $ недоступными.

+0

Это правильный ответ. У меня был $ format = json; odata.metadata = none, но я изменил его на $ format = application/json; odata.metadata = none, и он работал как шарм. – Jordan