2013-06-16 2 views
0

У меня есть службы WCF, определенная на .svc:WCF REST returing всегда XML по умолчанию

<%@ ServiceHost Language="C#" Debug="true" Service="OL4RENT.WebService.BienWSREST" CodeBehind="BienWSREST.svc.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %> 

Интерфейс:

[WebeInvoke(Method = "GET", 
    ResponseFormat=WebMessageFormat.Json, 
    BodyStyle = WebMessageBodyStyle.Bare, 
    UriTemplate = "/{tipo}/{bienId}")] 
    DataBien VerBien(string tipo, string bienId); 

Так он должен вернуть JSon по умолчанию, но если я делаю обычный запрос через браузер, я получаю ответ в формате xml! Я получаю только Json, если запрос имеет Content-Type = application/json.

Как настроить поведение по умолчанию для возврата json?

ответ

0

От MSDN doc: Если сообщение запроса содержит заголовок Accept, инфраструктура Windows Communication Foundation (WCF) ищет тип, который он поддерживает.

Браузеры по умолчанию добавляют много материала в заголовок Accept каждого запроса. См. http://www.gethifi.com/blog/browser-rest-http-accept-headers для получения дополнительной информации. Суть заключается в том, что браузер, который вы используете, имеет «application/xml» перед «application/json» (если он даже имеет его) в заголовке, что заставляет внутренние среды WCF возвращать XML.

Лучше, если вы используете клиент для отдыха (например, Fiddler, RESTClient extension для Chrome или FF), чтобы проверить свои служебные вызовы.

См. MSDN doc относительно того, как настроить поведение svcs WCF для запросов.

+0

Странно, у меня есть другой проект, который восстанавливает json по умолчанию, с той же конфигурацией: S –

Смежные вопросы