将空参数传递给WCF服务

4

我对非.NET客户端应用程序如何向给定方法发出信号,表明它不想为给定参数指定一个值(使服务假设默认值)感到好奇。换句话说,应用程序如何向WCF服务发出null参数的信号?

3个回答

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

3
它可以从SOAP文档中排除参数(假设是HTTP端点),如果允许的话。确切地说,是否允许以及如何执行取决于生成XSD的方式。这些可以通过[DataMember]属性的参数来控制。如果[DataMember(IsRequired=true)] MSDN,则xml将需要包含此元素(我认为minOccurs将为1),如果元素可为空(根据数据类型nillable=true)。如果[DataMember(EmitDefaultValue=true)] MSDN,则在序列化项具有其默认值时,将存在一个元素。

3
除了Ethan的回答外,您还可以在DataMember属性上设置IsRequired属性:
[DataMember(IsRequired=false)]

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接