2014-01-14 3 views
3

У меня есть ODataController, который, кажется, работает нормально, если я просто делаю GET через мой браузер. Но когда я использую JayData для чтения, я получаю 500 обратно. Я вижу, что GetItems() вызывается в моем ODataController и возвращает действительный список элементов. Я, но я вижу несколько исключений ODataContentTypeException броска, которые имеют follwing сообщение:JayData чтение от контроллера OData throws ODataContentTypeException

Дополнительная информация: Поддерживаемый тип MIME не может быть найдено, что соответствует типу содержимого ответа. Ни один поддерживаемый тип (ы) 'application/atom + xml; type = feed, application/atom + xml, application/json; odata = verbose, application/json' соответствует типу содержимого 'application/json; OData = fullmetadata; кодировка = UTF-8' .

Затем

Дополнительная информация: поддерживаемый тип MIME, не может быть установлено, что совпадает с типом содержимого ответа. Ни один поддерживаемый тип (ы) 'application/atom + xml; type = feed, application/atom + xml, application/json; odata = verbose, application/json' соответствует типу содержимого 'application/json; OData = fullmetadata; кодировка = UTF-8' .

Затем

Дополнительная информация: поддерживаемый тип MIME, не может быть установлено, что совпадает с типом содержимого ответа. Ни один из поддерживаемых типов (типов) приложения/xml, application/json; odata = verbose, application/json 'не соответствует типу содержимого' application/json; OData = fullmetadata; кодировка = UTF-8' .

И наконец

Дополнительная информация: Поддерживаемый тип MIME не может быть найден соответствующий тип содержимого ответа. Ни один из поддерживаемых типов (типов) приложения/xml, application/json; odata = verbose, application/json 'не соответствует типу содержимого' application/json; OData = fullmetadata; кодировка = UTF-8' .

Я предполагаю, что это причина 500, с которой я возвращаюсь, но, похоже, не существует способа быть уверенным. Согласно Chrome, запрос отправляется запрашивает следующее:

Accept: применение/atomsvc ​​+ XML; д = 0,8, применение/JSON; OData = fullmetadata; д = 0,7, приложения/JSON; д = 0,5, /; д = 0,1

Accept-Encoding: GZIP, выкачать, SDCH

пустой ответ с ошибкой 500 это все, что будет получен назад. У кого-нибудь еще есть эта проблема?

Accept-Language: EN-US, еп, д = 0,8, еп-CA; д = 0,6

ответ

4

Для того чтобы это решение имеет смысл больше информации необходимо: Использование MVC5, с WebAPI 2.0 и пакет OData nuget версии 5.0

По какой-то причине JayData пытается использовать OData v2. Поэтому, чтобы исправить это, я прорыл исходный код и обнаружил, что вы можете указать V3.

Измените конфигурацию вашего контекста, чтобы включить maxDataServiceVersion: «3.0».

Отсюда:

dbContext = new MyEntities({ name: 'oData', oDataServiceHost: '/odata' })); 

Для этого:

dbContext = new MyEntities({ name: 'oData', oDataServiceHost: '/odata', maxDataServiceVersion: '3.0' })); 

И это работает для меня.

Было бы неплохо, если бы JayStack документировал доступные параметры конфигурации.

+1

Я хотел бы поддержать вас в тысячу раз больше, но, к счастью, сэр, я разрешен, но один – Eonasdan

Смежные вопросы