Der beste Weg, „application / x-www-form-urlencoded“ post-Daten mit WCF zu unterstützen?
-
03-07-2019 - |
Frage
Ich baue einen WCF-Dienst basierte auf einer W3C-Spezifikation, die einen RESTful Web-Service-Endpunkt definiert, die "application / x-www-form-urlencoded" post-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:
XElement Query_Post(Stream postData);
Und dann innerhalb der Implementierung Decodierung des postData
Stromes der HttpUtility.ParseQueryString
Methode.
Kennt jemand eine stark typisierte Art und Weise zu unterstützen "application / x-www-form-urlencoded" in WCF?
Ich würde meinen Betrieb Vertrag gerne sein:
XElement Query_Post(string query, string [] params);
Lösung
Der beste Weg ist Stream
zu verwenden wie Raw HTTP POST mit WCF oder was Sie sagen.
Der Grund ist, weil WCF abstrahiert alle Kommunikationsebene physisches Layout Sachen aus dem Service-Code. Im Idealfall würden wollen, können Sie einen Service in Anspruch nehmen, die in SOAP oder REST nur durch den Schalter umlegen.
es nativ zu unterstützen, haben Sie wahrscheinlich WebHttpBinding
zu verlängern oder Ihre eigene Bindung zu machen und umzusetzen
Andere Tipps
Die WCF REST Contrib Bibliothek ermöglicht diese Funktionalität:
https://github.com/mikeobrien/WcfRestContrib
Es enthält eine POX-Formatierer und Form url codiert Formatierer und ermöglicht Ihnen die einfache eigene zu erstellen. Formatter zu MIME-Typen abgebildet werden und automatisch die Entitätskörpers serialisiert / deserialisiert auf den Inhaltstyp und akzeptieren Header basierend ausgewählt.