Что такое reponse.d при возврате данных из службы WCF с ContentType «application / json»? - PullRequest
0 голосов
/ 24 октября 2009

У меня есть служба WCF, у которой есть webHttpBinding и включен enableWebScript в конфигурации поведения конечной точки.

Ответ от службы выглядит примерно так

HTTP / 1.1 200 OK Дата: пт, 23 октября 2009 20:09:02 GMT Сервер: Microsoft-IIS / 6.0 X-AspNet-версия: 2.0.50727 Cache-Control: приватный Тип контента: приложение / JSON; кодировка = UTF-8 Длина контента: 25

{"d": {"__ type": "SOMETYPE", ...}}

Используется HTTP 1.1, поэтому существуют стандартные заголовки. Для contentType установлено значение applciation / json, что также имеет смысл. В теле сообщения (часть JSON) все заключено в конверт с названием «d».

Что это? Кто определяет этот протокол? Это что-то особенное для WCF?

Я не смог найти того, что определено ни в одном из задействованных протоколов или в определении contentType "application / json".

Спасибо

1 Ответ

2 голосов
/ 24 октября 2009

Это специфично для ASP.NET AJAX и вызвано применением WebScriptEnablingBehavior (enableWebScript в конфигурации) к вашей конечной точке. Оболочка требуется как для ввода, так и для вывода, а также добавлены специальные способы обработки исключений.

Если вы хотите «чистый» JSON, вы должны удалить WebScriptEnablingBehavior и просто использовать WebHttpBehavior (webHttp в конфигурации). Затем просто убедитесь, что вы явно задали свойства Request / ResponseFormat в своих WebGet / InvokeAttributes .

...