通过WCF中的HTTP Post接受表单字段

通过WCF中的HTTP Post接受表单字段,wcf,http-post,webinvoke,Wcf,Http Post,Webinvoke,我需要接受表单数据到基于WCF的服务。以下是界面: [OperationContract] [WebInvoke(UriTemplate = "lead/inff", BodyStyle = WebMessageBodyStyle.WrappedRequest)] int Inff(Stream input); 以下是实现(示例-无错误处理和其他保护措施): 假设WCF,除了解析传入流之外,还有更好的方法来实现这一点吗 我记得在DevLink跟你说过这件事 由于您必须支持表单字段,因

我需要接受表单数据到基于WCF的服务。以下是界面:

[OperationContract]
[WebInvoke(UriTemplate = "lead/inff",
    BodyStyle = WebMessageBodyStyle.WrappedRequest)]
int Inff(Stream input); 
以下是实现(示例-无错误处理和其他保护措施):


假设WCF,除了解析传入流之外,还有更好的方法来实现这一点吗

我记得在DevLink跟你说过这件事

由于您必须支持表单字段,因此获取这些字段的机制(您当前正在做的事情)不会改变

一些可能有用的东西,特别是,如果您想为不需要表单字段的新应用程序重用服务,则需要创建一个通道,该通道解构您的流并将其重新打包为XML/JSON/SOAP/任何格式,并让您的表单客户端通过该通道与服务通信,而不使用表单的客户端可以使用另一个通道堆栈。只是一个想法


希望有帮助。如果您需要有关频道的帮助,请随时通知我。

您可以使用jquery序列化表单字段,并将其打包为对wcf服务的json请求。

James,我非常感兴趣的是,您将如何在没有表单字段的情况下使用wcf实现此功能。你能给我指个方向吗?我可以从那里得到更多关于如何做这件事的信息吗?提前谢谢。
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;
}