Прием полей формы через HTTP Post в WCF - PullRequest
7 голосов
/ 29 сентября 2008

Мне нужно принять данные формы для службы на основе 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, есть ли лучший способ сделать это помимо анализа входящего потока?

Ответы [ 2 ]

5 голосов
/ 04 октября 2008

Я помню, как говорил с вами об этом на DevLink.

Поскольку вы должны поддерживать поля формы, механизм их получения (то, что вы в данный момент делаете) не меняется.

Что-то, что может быть полезно, особенно если вы хотите повторно использовать свой сервис для новых приложений, которым не нужны поля формы, - это создать канал, который деконструирует ваш поток и перепаковывает его в XML / JSON / SOAP / Независимо от ваши клиенты форм взаимодействуют со службой через это, в то время как клиенты, которые не используют формы, могут использовать другой стек каналов. Просто идея ...

Надеюсь, это поможет. Если вам нужна помощь с каналом, дайте мне знать.

0 голосов
/ 03 апреля 2012

Вы можете сериализовать поля формы с помощью jquery и упаковать его как запрос json в службу wcf.

...