2011-02-09 11 views
6

Witam Mam projekt WCF Rest 4.0. Z jakiegoś powodu mam webservice, który powinien zwrócić Json i działa, gdybym trafił na punkt końcowy przez skrzypka, ale przez firefox lub chrome, gdy wpisuję adres otrzymuję xml. Co się dzieje???WCF ResponseFormat JSON Zwraca Json w Fiddler, Xml w przeglądarce Chrome/Firefox!

Dzięki za wszelką pomoc! Oto kod.

serwis internetowy w pytaniu:

[OperationContract] 
    [WebGet(UriTemplate = "",     
      ResponseFormat = WebMessageFormat.Json, 
      RequestFormat = WebMessageFormat.Json)] 

     public SomeObject [] GetObjects() 
     { 
       ..... 

Kod obiektu:

[DataContract] 
public class SomeObject 
{  
     [DataMember] 
     public string Date { get; private set; } 

     .... 
      public String Site { get; private set; } 
+0

Sprawdź nagłówki żądania. "Zaakceptuj" w szczególności. – Foole

+0

Jaki adres wpisujesz na pasku adresu? –

+0

Uri usługi internetowej. –

Odpowiedz

1

Jeśli używasz .NET Framework 4.0, jest to rozwiązanie: http://karnicki.eu/2011/02/rest-wcf-net-4-0-service-with-json-jsonp-for-jquery/

WCF ma teraz jsonp wsparcia wyjęciu z pudełka z niewielkim konfiguracji wymagane.

Zasadniczo wystarczy edytować/dodać dwa wpisy pliku konfiguracyjnego, tryb uwierzytelniania i StandardEndpoint, i voila, można wyświetlić odpowiedź json z usługi WCF w dowolnej przeglądarce.

EDIT: Oryginalny link jest w dół - może to pomóc: http://blog.shutupandcode.net/?p=696

+0

Czy istnieje inne miejsce, w którym znajduje się ten post? Mam ten sam problem i link jest dla mnie martwy. –

+0

nj, to może ci pomóc http://blog.shutupandcode.net/?p=696 – fjxx

2

Opublikowałem to jako komentarz, ale dodam tutaj więcej szczegółów.

Twoja przeglądarka jest najprawdopodobniej wysyłając ten nagłówek:

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 

pamiętać, że nie ma mowy o JSON, ale nie wspomina xml.

Twój klient WCF najprawdopodobniej używa innego nagłówka "Accept", który preferuje json. Możesz to sprawdzić w Skrzypku.

+0

Ten nagłówek umożliwia programowi IIS automatyczne wybieranie formatu odpowiedzi. Zobacz moją odpowiedź 'automaticFormatSelectionEnabled =" false "', aby usługa sama zdecydowała o formacie. – enguerran

0

miałem ten sam problem. I used a WCF configuration with no svc.

musiałem zmienić tę wartość logiczną w web.config z prawdą:

<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/> 

false:

<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="false"/> 
Powiązane problemy