Ich erstelle einen WCF-Dienst, der auf einer W3C-Spezifikation basiert, die einen RESTful-Webservice-Endpunkt definiert, der "post / x-www-form-urlencoded" -Postdaten akzeptiert. WCF unterstützt diese Art der Nachrichtencodierung standardmäßig nicht und ich habe eine Reihe verschiedener Beispiele zum Erstellen eines Vertrags gefunden, der folgendermaßen aussieht:
%Vor% Und dann innerhalb der Implementierung den postData
Stream dekodieren mit der HttpUtility.ParseQueryString
Methode.
Kennt jemand eine stärker typisierte Art der Unterstützung von "application / x-www-form-urlencoded" in WCF?
Ich möchte meinen Betriebsvertrag haben:
%Vor% Der beste Weg ist, Stream
like Raw HTTP zu verwenden POST mit WCF oder was du sagst.
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 SOAP oder REST werden kann, indem Sie einfach den Schalter umlegen.
Um es nativ zu unterstützen, müssen Sie wahrscheinlich WebHttpBinding
erweitern oder eine eigene Bindung erstellen und benutzerdefiniert implementieren Encoder . Dies ist symmetrisch zur Ausgabe, wie der verlinkte Post sagt. Sie müssen seine Arme verdrehen, damit WCF nicht-XML / JSON-Zeug ausgibt.
Die WCF REST Contrib-Bibliothek aktiviert diese Funktionalität:
Es enthält einen POX-Formatierer und einen Form-URL-kodierten Formatierer und erlaubt Ihnen, leicht Ihren eigenen zu erstellen. Formatierer werden Mime-Typen zugeordnet und automatisch zum Serialisieren / Deserialisieren des Entitätshauptteils basierend auf dem Inhaltstyp und dem Akzeptieren von Headern ausgewählt.
Tags und Links wcf rest http web-services post