Использование $format=json
из коробки для службы данных .NET 4 WCF не будет работать, даже если спецификация OData говорит, что она поддерживается. Я не уверен, почему Microsoft не поддерживает это напрямую. Но есть два обходных пути в этой ситуации - один чувствует себя немного хакером, а другой имеет какой-то смысл.
Во-первых, решение, которое кажется немного хакерским, состоит в том, чтобы создать HttpHandler, который перехватывает ваш запрос, читает параметр строки запроса $format=json
, а затем добавляет заголовок accept к вашему запросу (удаляя ошибочный параметр $format=json
). Это описано в этом блоге .
Второе решение, которое звучит немного лучше, - это украсить вашу службу данных атрибутом [JSONPSupportBehavior]
. Это имеет немного больше смысла и немного проще в реализации (так как вам не нужно создавать HttpHandler). Вот несколько полезных ссылок:
Мне нравится атрибутивный подход, я просто хочу, чтобы это не было загрузкой с CodePlex ... просто пока не поддерживается. Но это только мое мнение.
Честно говоря, если у вас есть контроль, лучший способ - просто добавить заголовок accept к вашему запросу application/json
, и ваш сервис автоматически вернет результаты в формате JSON.
Надеюсь, это поможет.