我们的.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解释这种行为吗?
由于
答案 0 :(得分:1)
@Phil - 你把它弄好了。在发布模式下生成消息时,soap消息中的命名空间不正确。
问题是因为自动生成的序列化程序集。通过关闭项目属性中的“生成序列化程序集”选项,问题得到解决。当此选项打开时,编译器使用sgen.exe为程序集中的所有类型生成序列化程序集,这将增加应用程序启动时间。出于某种原因,生成的程序集指的是错误的程序集。有关详细信息,请参阅以下墨水
http://msdn.microsoft.com/en-us/library/bk3w6240(VS.80).aspx
答案 1 :(得分:0)
听起来像需要显式声明的命名空间。你能附上你想要序列化的代码/业务对象的样本吗?