WCF 4.0: WebMessageFormat.Json не работает с шаблоном REST WCF - PullRequest
30 голосов
/ 23 сентября 2010

Скачал шаблон REST WCF из этого местоположения.

Формат ответа по умолчанию - 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.Это единственное изменение, которое я внес в этот шаблон.

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

Спасибо!

Ответы [ 5 ]

56 голосов
/ 23 сентября 2010

разобрался. Свойство automaticFormatSelectionEnabled для стандартной точки должно быть установлено на false, а defaultOutgoingReponseFormat должно быть установлено на Json.

<standardEndpoint name="" helpEnabled="true" 
    automaticFormatSelectionEnabled="false" 
    defaultOutgoingResponseFormat ="Json" />
6 голосов
/ 08 ноября 2011
 <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")
5 голосов
/ 26 мая 2011

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

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


// This doesn't work
`[WebGet(UriTemplate = "/conditions?term={term}", ResponseFormat = WebMessageFormat.Json)]`
1 голос
/ 16 ноября 2011

Нажмите -> справочные ссылки

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

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

0 голосов
/ 29 ноября 2012

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

Теперь я просто следую приведенным здесь шагам.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...