Не удается заставить JSONP работать со службами данных WCF - PullRequest
8 голосов
/ 06 июня 2010

Из всего, что я читал и смотрел, кажется, что выставить JSON из службы данных WCF так же просто, как добавить атрибут JSONPSupportBehavior в класс службы.

Проблема в том, что VS2010 не распознает атрибут JSONPSupportBehavior.

Есть ли ссылка, по которой я скучаю? Похоже, из всех статей он был поддержан из коробки.

Ответы [ 3 ]

9 голосов
/ 10 июня 2010

Службы данных WCF поддерживают стандарт JSON, нет необходимости добавлять атрибуты или что-либо еще.

Чтобы получить ответ в формате JSON, клиенты используют стандартное согласование типа содержимого HTTP.

В частности, они должны включать application/json в accept заголовок запроса.

В этом разделе приведены примеры документации по протоколу OData 1010 *.

В этих примерах показаны необработанные HTTP-запросы. Разные клиентские HTTP API имеют разные механизмы для указания заголовков запросов.

Атрибут JSONPSupportBehavior является примером расширения, которое позволяет клиентам использовать параметр строки URL-запроса (например, $format=json) в дополнение к согласованию типа содержимого, а также добавляет поддержку JSONP (например, $callback=[function-name]).

Они полезны в ситуациях, когда вы не контролируете заголовки, например, при междоменном доступе через теги скрипта.

Если вы хотите использовать JSONPSupportBehavior, вы можете получить его здесь:

http://code.msdn.microsoft.com/DataServicesJSONP

2 голосов
/ 10 мая 2013

Более новые версии WCF Data Services по умолчанию поддерживают JSON, и вы должны иметь

Accept: application/json;odata=verbose

в заголовке запроса.

Accept: application/json

больше не достаточно. Подробнее здесь .

0 голосов
/ 25 января 2012

WCF не только поддерживает JSON "из коробки", но также поддерживает JSONP "из коробки", если вы используете WCF WebApi (превью 6). Получить в VS 2010 с NuGet. После того, как вы его установили, посмотрите здесь для получения дополнительной информации.

...