WCF REST-return einzelne Methode als JSON und XML
Ich verwende folgenden Code für WCF-Rest-Services zu erhalten, im JSON-format
[OperationContract]
[WebGet(UriTemplate = "/GetOrderList?request={request}", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
IEnumerable<Order> GetOrderList(Request request);
Möchte ich diese Methode zum zurückgeben von XML-Typ auch. Brauche ich eine weitere Methode für Sie ?
Ich will es tun in der gleichen Methode, ohne das duplizieren von code für die XML.
Ich bin mit WCF 3.5. Ich kann nicht ändern, meine version.
InformationsquelleAutor user662285 | 2013-02-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche Problem.
Wir die Lösung, indem zwei Endpunkte, eine für XML und die andere für JSON.
Stellen Sie sicher, entfernen Sie alle Attribute der Service-Schnittstelle. Nicht angegeben RequestFormat oder ResponseFormat zu kontrollieren, XML oder JSON. Lassen Sie es kontrolliert durch den Endpunkt.
Service Web.Config-änderungen.
Hoffe, das hilft.
Vertrag="xxxxxx.Ixxxxxxx" ist in der Tat ein Verweis auf die Schnittstelle.
Dies hat wirklich geholfen. Danke.
InformationsquelleAutor Satchi
Den Sie nicht selbst benötigen, geben Sie den Rückgabetyp hier , wir haben eine Eigenschaft namens automaticFormatSelectionEnabled für WebGet Ende zeigen Verhaltensweisen, wie unten gezeigt. Wenn Sie Ihre rest-Aufruf-Anfrage vom client, Sie können die Art, wie WebClient.Headers["Content-type"] = "application/json"; oder WebClient.Headers["Content-type"] = "application/xml"; , service erkennt den Typ und die Rückkehr das richtige format, die Sie wollen ..
automaticFormatSelectionEnabled
Attribut wurde Hinzugefügt .NET 4.0; der OP angegeben, dass Sie verwenden müssen, 3.5Yep, es für 4.0 und höher .. :S.
-1: die OP erfordert .NET 3.5
Der header sieht es für den "Akzeptieren" in meinem Umfeld nicht "Content-type"
InformationsquelleAutor Vibin Kesavan
Wenn Sie wurden mit Hilfe .NET 4.0 oder 4.5, dann wäre es einfach - entweder Sie nutzen die automatische format-Auswahl vorgeschlagen von Vibin Kesavan, oder innerhalb des Betriebs festlegen die
WebOperationContext.Current.OutgoingResponse.Format
entweder JSON oder XML je einige Ihrer Logik.3.5 müssen Sie die meiste Arbeit zu tun. Dieser Beitrag eine Implementierung genau dieses Szenario. Müssen Sie erstellen eine benutzerdefinierte dispatch message formatter-Implementierung, die (wahrscheinlich) stellt zwei formatter, eine für JSON und eine für XML. Und beim serialisieren der Antwort, zu entscheiden, welche Formatierung zu verwenden, basierend auf Ihrer Logik.
InformationsquelleAutor carlosfigueira