Aceitar os campos do formulário via HTTP Post no WCF
Pergunta
Eu preciso aceitar dados do formulário para um serviço baseado em WCF. Aqui está a interface:
[OperationContract]
[WebInvoke(UriTemplate = "lead/inff",
BodyStyle = WebMessageBodyStyle.WrappedRequest)]
int Inff(Stream input);
Aqui está a implementação (amostra - sem tratamento de erros e outras salvaguardas):
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;
}
Assumindo WCF, existe uma maneira melhor de fazer isso além de analisar o fluxo de entrada?
Solução
Lembro-me de falar com você sobre isso em DevLink.
Uma vez que você tem que suporte campos de formulário a mecânica de obtenção desses (o que você está fazendo atualmente) não mudam.
Algo que pode ser útil, especialmente se você quiser reutilizar o seu serviço para novas aplicações que não exigem os campos do formulário é criar um canal que desconstrói o seu fluxo e reposiciona a XML / JSON / SOAP / O que quer e ter seus clientes formulário comunicar com o serviço através de que, enquanto os clientes que não usam formulários podem usar outra pilha de canal. Apenas uma idéia ...
Espero que ajude. Se precisar de ajuda com a sensação de canal livre para me informar.
Outras dicas
Você pode serializar os campos do formulário com jQuery e empacotá-lo como o pedido JSON para o serviço WCF.