2009-03-02 10 views
8

Ich baue einen WCF-Service basierend auf einer W3C-Spezifikation, die einen RESTful-Web-Service-Endpunkt definiert, der "post-x-www-form-urlencoded" -Daten akzeptiert. WCF nicht diese Art von Nachrichtencodierung unterstützen standardmäßig, und ich habe eine Reihe von verschiedenen Beispiele für das Erstellen eines Vertrages gefunden, die wie folgt aussieht:Die beste Methode, um "application/x-www-form-urlencoded" Post-Daten mit WCF zu unterstützen?

XElement Query_Post(Stream postData); 

Und dann im Rahmen der Umsetzung Decodierung des postData Strom die HttpUtility.ParseQueryString Methode .

Kennt jemand eine stärker typisierte Art der Unterstützung von "application/x-www-form-urlencoded" in WCF?

ist
XElement Query_Post(string query, string [] params); 
+3

Die Tatsache, dass 24 Stunden später niemand weiß, was zu tun ist, was solch ein grundlegender Gedanke sein sollte, sollte zeigen, dass WCF nicht die beste Plattform ist, um erholsame Sachen zu bauen. Versuchen Sie OpenRasta, ich glaube, es hat einen Codec eingebaut, um x-www-Form-urlencoded Daten zu behandeln. –

Antwort

7

Der beste Weg, Stream wie Raw HTTP POST with WCF zu verwenden, oder, was Sie sagen:

würde ich meinen Betrieb Vertrag sein mögen. Der Grund dafür ist, dass WCF alle physischen Layouts auf Kommunikationsebene aus dem Servicecode abstrahiert. Im Idealfall möchten Sie einen Dienst erstellen, der durch einfaches Umlegen des Switches in SOAP oder REST umgewandelt werden kann.

Um es nativ zu unterstützen, müssen Sie wahrscheinlich WebHttpBinding erweitern oder eigene Bindungen erstellen und custom encoder implementieren. Dies ist symmetrisch zur Ausgabe, wie der verlinkte Post sagt. Sie müssen seine Arme verdrehen, damit WCF nicht-XML/JSON-Zeug ausgibt.

+0

Haben Sie ein Beispiel mit einer nicht toten Verbindung? –

2

Die WCF REST Contrib Bibliothek ermöglicht diese Funktionalität:

https://github.com/mikeobrien/WcfRestContrib

Es hat eine POX-Formatierer und Form url codiert Formatierer enthält und ermöglicht Ihnen die einfache eigene zu erstellen. Formatierer werden MIME-Typen zugeordnet und automatisch zum Serialisieren/Deserialisieren des Entitätshauptteils basierend auf dem Inhaltstyp und den Akzeptieren von Headern ausgewählt.

+0

Downvoted weil URL ist gebrochen ... – ewitkows

+0

Diese Antwort ist 6 Jahre alt Chef. – hcoverlambda

+0

Und es bietet keine Hilfe mehr Chef – ewitkows