c# - 将多个参数发布到 WCF 服务

标签 c# wcf

我想了解 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/

相关文章:

c# - ViewModel 中的类似属性名称未在 Controller 操作方法中绑定(bind)

c# - 获取不同项目及其数量的列表

c# - 不使用 Azure 客户端 SDK 连接到 IoT 中心

xml - 将 xml 从一个文件夹移动到另一个文件夹时出错。字母之间为空

c# - 任务栏中的应用程序

c# - 如何在 UWP 中为 ComboBox 启用自由文本

c# - 排队服务调用

wcf - 端点与 web/app.config 的编程配置

c# - 进程无法访问该文件,因为它正被 Directory.Move() 上的另一个进程使用

javascript - WCF REST 身份验证 - 确定 Web 请求