Подтвердить что ты не робот

WCF 4.0: WebMessageFormat.Json не работает с шаблоном REST WCF

Загрузили шаблон WCF REST из это местоположение.

Формат ответа по умолчанию - это XML, который отлично работает. Однако, когда я пытаюсь получить ответ JSON, я все равно получаю XML.

Это мой модифицированный код -

[WebGet(UriTemplate = "",ResponseFormat = WebMessageFormat.Json)]
    public List<SampleItem> GetCollection()
    {
        // TODO: Replace the current implementation to return a collection of SampleItem instances
        return new List<SampleItem>() { new SampleItem() { Id = 1, StringValue = "Hello" } };
    }

Обратите внимание на ResponseFormat = WebMessageFormat.Json. Это единственное изменение, которое я сделал с этим шаблоном.

Что мне не хватает?

Спасибо!

4b9b3361

Ответ 1

Выяснено. automaticFormatSelectionEnabled свойство для стандартного домена должно быть установлено на false, а defaultOutgoingReponseFormat должен быть установлен на Json.

<standardEndpoint name="" helpEnabled="true" 
    automaticFormatSelectionEnabled="false" 
    defaultOutgoingResponseFormat ="Json" />

Ответ 2

 <system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
        <standardEndpoints>
            <webHttpEndpoint>
                <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="false" defaultOutgoingResponseFormat="Json"/>
            </webHttpEndpoint>
        </standardEndpoints>
 </system.serviceModel>

Изменения в 2 атрибутах в файле web.config будут исправлены:

  • automaticFormatSelectionEnabled=false
  • defaultOutgoingResponseFormat=Json (отредактировано: от "true" )

Ответ 3

Для меня настройка формата ответа JSON в атрибуте WebGet не работает. Установка его в тело метода выполняется;

// This works
WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Json;
return jsonData;


// This doesn't work
`[WebGet(UriTemplate = "/conditions?term={term}", ResponseFormat = WebMessageFormat.Json)]`

Ответ 4

Нажмите → ссылки ссылки

"Когда включен автоматический выбор формата, инфраструктура анализирует заголовок Accept сообщения запроса и определяет наиболее подходящий формат ответа. Если заголовок Accept не указывает подходящий формат ответа, инфраструктура использует Content-Type запросить сообщение или формат ответа по умолчанию для операции."

РЕДАКТИРОВАТЬ: эта ссылка может заставить вас двигаться вперед http://blogs.msdn.com/b/endpoint/archive/2010/11/01/wcf-webhttp-service-returns-http-415-unsupported-media-type.aspx

Ответ 5

Я сталкивался с такими проблемами каждый раз, когда пытался создать веб-службу JSON.

Теперь я просто следую инструкциям, показанным здесь.

http://mikesknowledgebase.com/pages/Services/WebServices-Page1.htm

Он показывает, как создать веб-службу JSON, шаг за шагом, с скриншотами и примерами.

Надеюсь, что это поможет.