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

时间:2020-03-06 14:51:30  来源:igfitidea点击:

我需要接受表单数据到基于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 / Whatever,并让表单客户端通过这种方式与服务进行通信,而不使用表单的客户端可以使用另一个通道堆栈。只是个主意...

希望能有所帮助。如果我们需要有关渠道的帮助,请随时告诉我。