将空参数传递给WCF服务

时间:2011-06-13 15:24:36

标签: .net null wcf

我很好奇WCF服务的非.NET客户端应用程序可以向给定方法发出信号,表示它不希望为给定参数指定值(使服务接受默认值) 。换句话说,应用程序如何向WCF服务发送null参数?

3 个答案:

答案 0 :(得分:3)

如果您使用SOAP(或其他一些基于XML的标准)与服务进行通信,则可以使用<myProperty xsi:nil="true"/>来提供该属性。非.NET客户端应用程序如何生成nil值将特定于您正在使用的框架。

答案 1 :(得分:3)

它可以从SOAP文档中排除参数(假设HTTP端点),假设允许这样做。

究竟是否允许/应该如何完成取决于XSD的生成方式。

这些可以通过[DataMember]属性的参数来控制。

如果[DataMember(IsRequired=true)] MSDN那么xml将需要包含这个元素(minOccurs将是1我相信),如果元素可能是nillable(nillable = true,取决于数据类型)< / p>

如果[DataMember(EmitDefaultValue=true)] MSDN,则元素在序列化时具有默认值时会有一个元素。

答案 2 :(得分:3)

除了Ethan的答案,您还可以在DataMember属性上设置IsRequired属性:

[DataMember(IsRequired=false)]

当设置为false时,如果SOAP消息中缺少该属性,DataContractSerializer会将该属性设置为其默认值(对于任何可空类型,为null)。有时,使用otehr语言的SOAP客户端可能更容易省略属性,而不是发送<myProperty xsi:nil="true"/>