Вопрос

Мне нужно принять данные формы в службу на основе 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top