2008-09-29 3 views
7

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

ответ

5

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

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

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

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

+0

James - спасибо за информацию! Off для исследования каналов wcf ... – BryanB 2008-10-07 02:49:00

0

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

Смежные вопросы