我想了解 WCF,所以我的问题可能很愚蠢。我相信我对“GET”操作有深刻的理解。我现在正在处理一些“POST”操作。我的问题是,我可以使用 WebInvoke 编写接受多个参数的 WCF 服务操作吗?或者,当我发布数据时,它是否只接受一个序列化参数?
谢谢!
最佳答案
是的,但是您的 POST 必须使用对数据的共同理解传递,也就是“数据契约”。
在 WCF 中,这里的典型方法是您将创建一个契约类(只是一个脱离我头脑的例子,不是 100% 有效))
[DataContract(Namespace="http://yournamespace.com")]
public class MyContract
{
[DataMember(Order=1)]
public string MyData1 { get(); set{};}
[DataMember(order=2)]
public string MyData2 { get(); set{};}
}
然后您将指定您的 WCF 操作以接受该协定类型作为其参数
[WebInvoke(method="POST")]
public string DoSomethingFromPost(MyContract postedData)
{
}
在您的客户端上,您会将数据序列化为与您的契约(Contract)相匹配的 xml/json。同样,松散的例子:
<MyContract xmlns="http://yournamespace.com">
<MyData1>value</MyData1>
<MyData2>value</MyData2>
</MyContract>
当契约匹配时,WCF 会将您的 POST 反序列化为您的契约对象,此时您可以像使用任何其他类一样使用它。
关于c# - 将多个参数发布到 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4913953/