Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCF是否可以配置为';重构&x27;序列化消息上的XMLSchema实例命名空间?_Wcf_Datacontractserializer - Fatal编程技术网

WCF是否可以配置为';重构&x27;序列化消息上的XMLSchema实例命名空间?

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

我们注意到,当在SOAP调用期间序列化
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
。我要痛击一下。