Как отключить согласование содержимого и всегда возвращать JSON из службы данных WCF? - PullRequest
2 голосов
/ 02 ноября 2011

Допустим, у меня есть база данных северного ветра, и я использую ADO.NET Entity Data Model, которую я автоматически генерирую из таблиц в базе данных.Затем я добавляю новую службу данных WCF, которая наследуется от DataService.Когда я запускаю веб-приложение, которое запускает службу, я могу запросить данные, подобные этим: http://machine/Northwind.svc/Orders

Это вернет все заказы из таблицы заказов в формате atom / xml.Проблема в том, что я не хочу XML.Я хочу JSON.Я думаю, что я пробовал все виды настроек (web.config) и атрибутов в моем приложении, но я все еще получаю XML.Не важно что.Я могу получить только JSON, когда использую fiddler и изменяю заголовок запроса для принятия JSON.

Мне не нравится концепция согласования контента.Я хочу всегда возвращать данные в формате JSON.Как мне этого добиться?

Имейте в виду, что я не создавал никаких объектов модели, они автоматически создаются на основе таблиц базы данных и связей.

Ответы [ 2 ]

2 голосов
/ 03 ноября 2011

Хорошо - согласование контента идет с HTTP. В любом случае вы можете перехватить входящий запрос и добавить / перезаписать заголовок Accept, чтобы всегда указывать JSON. Существует пример того, как поддерживать JSONP, который использует подобный прием, я думаю, вы должны иметь возможность изменить его так, чтобы он всегда возвращал JSON. http://archive.msdn.microsoft.com/DataServicesJSONP.

1 голос
/ 02 ноября 2011

Поведение, которое вы критикуете, определяется спецификацией протокола OData . По умолчанию OData имеет значение Atom, и клиент может контролировать тип носителя представления либо с помощью заголовка HTTP Accept, либо с помощью параметра $format в строке запроса (но я не уверен, что службы данных WCF уже поддерживают это).

...