2008-09-29 13 views
7

Ich muss Formulardaten an einen WCF-basierten Dienst akzeptieren. Hier ist die Schnittstelle:Formularfelder über HTTP akzeptieren In WCF posten

[OperationContract] 
[WebInvoke(UriTemplate = "lead/inff", 
    BodyStyle = WebMessageBodyStyle.WrappedRequest)] 
int Inff(Stream input); 

Hier ist die Implementierung (Probe - keine Fehlerbehandlung und andere Schutzmaßnahmen):

public int Inff(Stream input) 
{ 

    StreamReader sr = new StreamReader(input); 
    string s = sr.ReadToEnd(); 
    sr.Dispose(); 

    NameValueCollection qs = HttpUtility.ParseQueryString(s); 
    Debug.WriteLine(qs["field1"]); 
    Debug.WriteLine(qs["field2"]); 

    return 0; 
} 

WCF Unter der Annahme, gibt es einen besseren Weg, dies zu erreichen, neben der eingehenden Stream-Parsing?

Antwort

5

Ich erinnere mich, dass ich bei DevLink darüber gesprochen habe.

Da Sie Formularfelder unterstützen müssen, ändert sich die Mechanik, die Sie erhalten (was Sie gerade tun), nicht.

Etwas hilfreich, insbesondere wenn Sie Ihren Dienst für neue Anwendungen wiederverwenden möchten, die keine Formularfelder erfordern, ist das Erstellen eines Kanals, der Ihren Stream dekonstruiert und ihn in XML/JSON/SOAP/Wherever und neu packt Wenn Ihre Formularclients mit dem Dienst kommunizieren, können Clients, die keine Formulare verwenden, einen anderen Kanalstapel verwenden. Nur eine Idee ...

Hoffe, dass hilft. Wenn du Hilfe mit dem Kanal benötigst, lass es mich wissen.

+0

James - danke für die Info! Aus zu erforschen wcf Kanäle ... – BryanB

+0

James, Ich bin sehr daran interessiert, wie Sie dies mit WCF ohne Formularfelder implementieren würde. Kannst du mich in eine Richtung weisen, in der ich mehr Informationen dazu bekommen könnte? Danke im Voraus. –

0

Sie können Ihre Formularfelder mit jquery serialisieren und sie als JSON-Anfrage an den WCF-Dienst packen.