Принятие полей формы через HTTP Post в WCF
Вопрос
Мне нужно принять данные формы в службу на основе WCF.Вот интерфейс:
[OperationContract]
[WebInvoke(UriTemplate = "lead/inff",
BodyStyle = WebMessageBodyStyle.WrappedRequest)]
int Inff(Stream input);
Вот реализация (пример – без обработки ошибок и других мер предосторожности):
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, есть ли лучший способ сделать это, кроме анализа входящего потока?
Решение
Я помню, как говорил с вами об этом на DevLink.
Поскольку вам необходимо поддерживать поля формы, механизм их получения (то, что вы сейчас делаете) не меняется.
Что-то, что может быть полезно, особенно если вы хотите повторно использовать свой сервис для новых приложений, которым не требуются поля формы, — это создать канал, который деконструирует ваш поток и переупаковывает его в XML/JSON/SOAP/что угодно, и иметь ваших клиентов формы. взаимодействовать со службой через него, в то время как клиенты, которые не используют формы, могут использовать другой стек каналов.Просто идея...
Надеюсь, это поможет.Если вам нужна помощь с каналом, дайте мне знать.
Другие советы
Вы можете сериализовать поля формы с помощью jquery и упаковать их как запрос json в службу wcf.