WCF 4.0: WebMessageFormat.Json nie działa z szablonem WCF REST

Pobrano szablon WCF REST z tej lokalizacji.

Domyślnym formatem odpowiedzi jest XML, który działa świetnie. Jednak, gdy próbuję uzyskać odpowiedź JSON, nadal otrzymuję XML.

To jest mój zmodyfikowany kod-

[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" } };
    }

Zwróć uwagę na ResponseFormat = WebMessageFormat.Json. To jedyna zmiana, jaką zrobiłem w tym szablonie.

Co mi umyka? Dzięki!
 30
wcf
Author: Ryan, 2010-09-23

5 answers

/ Align = "left" / automaticFormatSelectionEnabled właściwość dla standardendpoint powinna być ustawiona na false, a defaultOutgoingReponseFormat na Json.

<standardEndpoint name="" helpEnabled="true" 
    automaticFormatSelectionEnabled="false" 
    defaultOutgoingResponseFormat ="Json" />
 56
Author: Ryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-11 05:29:50
 <system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
        <standardEndpoints>
            <webHttpEndpoint>
                <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="false" defaultOutgoingResponseFormat="Json"/>
            </webHttpEndpoint>
        </standardEndpoints>
 </system.serviceModel>

Zmienia się na 2 atrybuty w sieci.config to naprawi:

  • automaticFormatSelectionEnabled=false
  • defaultOutgoingResponseFormat=Json (edited: from "true")
 6
Author: Ton Snoei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-08 08:39:15

Dla mnie ustawienie formatu odpowiedzi na JSON w atrybucie WebGet nie działa. Ustawienie go w ciele metody robi;

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


// This doesn't work
`[WebGet(UriTemplate = "/conditions?term={term}", ResponseFormat = WebMessageFormat.Json)]`
 5
Author: Alistair77,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-26 11:34:52

Click - > reference links

" gdy włączony jest automatyczny wybór formatu, Infrastruktura przetwarza nagłówek Accept wiadomości żądania i określa najbardziej odpowiedni format odpowiedzi. Jeśli nagłówek Accept nie określa odpowiedniego formatu odpowiedzi, Infrastruktura wykorzystuje typ treści komunikatu żądania lub domyślny format odpowiedzi operacji."

EDIT: ten link może cię poruszyć http://blogs.msdn.com/b/endpoint/archive/2010/11/01/wcf-webhttp-service-returns-http-415-unsupported-media-type.aspx

 1
Author: ChristoD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-17 12:52:23

Trafiałem w takie problemy za każdym razem, gdy próbowałem stworzyć serwis internetowy JSON.

Teraz po prostu postępuję zgodnie z instrukcjami pokazanymi tutaj.

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

Pokazuje, jak krok po kroku stworzyć serwis internetowy JSON z zrzutami ekranu i przykładami.

Mam nadzieję, że to pomoże.

 0
Author: Mike Gledhill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-29 15:43:44