Akzeptieren Formularfelder über HTTP Post in WCF
Frage
Ich muss Formulardaten an einen WCF-basierten Dienst akzeptieren. Hier ist die Schnittstelle:
[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;
}
Unter der Annahme, WCF, gibt es einen besseren Weg, dies zu erreichen, neben der eingehenden Stream-Parsing?
Lösung
Ich erinnere mich darüber bei DevLink zu Ihnen zu sprechen.
Da müssen Sie Formularfelder, die Mechanik des Erhaltens diejenigen unterstützen (was Sie gerade tun) ändern sich nicht.
Etwas, das hilfreich sein könnte, vor allem, wenn Sie Ihren Dienst für neue Anwendungen wiederverwendet werden sollen, dass die Formularfelder nicht erforderlich ist, einen Kanal zu schaffen, die Ihren Strom dekonstruiert und neu verpackt es in XML / JSON / SOAP / was auch immer und haben Ihre Form Clients kommunizieren mit dem Service durch, dass, während Kunden, die einen anderen Kanalstapel verwenden Sie keine Formulare verwenden können. Nur eine Idee ...
Ich hoffe, das hilft. Wenn Sie mit dem Kanal Hilfe benötigen fühlen Sie sich frei, mich zu informieren.
Andere Tipps
Sie können Ihre Formularfelder mit jquery und verpacken es als json Anfrage Wcf-Dienst.
serialisiert