Accettazione dei campi modulo tramite HTTP Post in WCF
Domanda
Devo accettare i dati del modulo per un servizio basato su WCF. Ecco l'interfaccia:
[OperationContract]
[WebInvoke(UriTemplate = "lead/inff",
BodyStyle = WebMessageBodyStyle.WrappedRequest)]
int Inff(Stream input);
Ecco l'implementazione (esempio: nessuna gestione degli errori e altre garanzie):
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;
}
Supponendo WCF, esiste un modo migliore per ottenere questo risultato oltre all'analisi del flusso in entrata?
Soluzione
Ricordo di averti parlato di questo in DevLink.
Dato che devi supportare i campi modulo, i meccanismi per ottenerli (cosa stai facendo attualmente) non cambiano.
Qualcosa che potrebbe essere utile, specialmente se si desidera riutilizzare il servizio per nuove applicazioni che non richiedono i campi del modulo è creare un canale che decostruisce il flusso e lo riconfeziona in XML / JSON / SOAP / Qualunque cosa abbia i client dei moduli comunicano con il servizio tramite questo mentre i client che non utilizzano i moduli possono utilizzare un altro stack di canali. Solo un'idea ...
Spero che sia d'aiuto. Se hai bisogno di aiuto con il canale, faccelo sapere.
Altri suggerimenti
Puoi serializzare i tuoi campi modulo con jquery e impacchettarlo come richiesta json al servizio wcf.