调试和发布模式中的序列化不同

时间:2012-06-21 20:15:15

标签: xml web-services msbuild xml-serialization xmlserializer

我们的.NET 4应用程序使用外部.NET Web服务,并且在调试模式下一切正常,但在发布模式下,我们遇到了序列化错误。检查发送给服务的SOAP请求,并在其中一个元素

中发现了一些差异

调试模式下的SOAP元素

        <Key>pswhistory</Key>
        <Value xsi:type="ArrayOfString">
           <string>a</string>
           <string>B</string>
        </Value>

发布模式中的肥皂元素

        <Key>pswhistory</Key>
        <Value xmlns:q1="http://tempuri.org/" xsi:type="q1:ArrayOfString">
           <q1:string>a</q1:string>
           <q1:string>B</q1:string>
        </Value>

有人可以用XMLSerializer解释这种行为吗?

由于

2 个答案:

答案 0 :(得分:1)

@Phil - 你把它弄好了。在发布模式下生成消息时,soap消息中的命名空间不正确。

问题是因为自动生成的序列化程序集。通过关闭项目属性中的“生成序列化程序集”选项,问题得到解决。当此选项打开时,编译器使用sgen.exe为程序集中的所有类型生成序列化程序集,这将增加应用程序启动时间。出于某种原因,生成的程序集指的是错误的程序集。有关详细信息,请参阅以下墨水

http://msdn.microsoft.com/en-us/library/bk3w6240(VS.80).aspx

Serialization Assembly. Is it needed or not?

答案 1 :(得分:0)

听起来像需要显式声明的命名空间。你能附上你想要序列化的代码/业务对象的样本吗?