WCF是否可以配置为';重构&x27;序列化消息上的XMLSchema实例命名空间?
我们注意到,当在SOAP调用期间序列化WCF是否可以配置为';重构&x27;序列化消息上的XMLSchema实例命名空间?,wcf,datacontractserializer,Wcf,Datacontractserializer,我们注意到,当在SOAP调用期间序列化null值时,WCF DataContractSerializer的效率不是很高。出于审计目的,我们还将确切的消息记录为发送到磁盘,因此这会浪费存储空间。具有多个nil元素的典型消息的发送方式如下: <MyMessage xmlns="myXmlns"> <field0>1234567</field0> <field1 xmlns:xsi="http://www.w3.org/2001/XMLSche
null
值时,WCF DataContractSerializer的效率不是很高。出于审计目的,我们还将确切的消息记录为发送到磁盘,因此这会浪费存储空间。具有多个nil元素的典型消息的发送方式如下:
<MyMessage xmlns="myXmlns">
<field0>1234567</field0>
<field1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
<field2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
<field3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
// etc
</MyMessage>
1234567
//等
对于带宽和磁盘方面的考虑,一个不可估量的改进是生成一个SOAP主体,例如:
<MyMessage xmlns="myXmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<field0>1234567</field0>
<field1 xsi:nil="true" />
<field2 xsi:nil="true" />
<field3 xsi:nil="true" />
//etc
</MyMessage>
1234567
//等
因此,我的问题是,如何更改我的WCF客户机来整合根元素上的XSI命名空间,以防止它在每个nil元素上重复?您不能调整序列化程序,但是如果您实现了一个,您可以操纵您的内容 如果你想完全去掉空值,并且永远看不到它是否不存在,你可以装饰它
[DataMember(EmitDefaultValue=false)]
谢谢我完全忘记了
EmitDefaultValue
。我要痛击一下。