0

我们的 .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 解释这种行为吗?

谢谢

4

2 回答 2

1

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

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

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

序列化程序集。是否需要?

于 2012-06-22T20:23:07.263 回答
0

听起来像是需要显式声明的命名空间。您能否附上您尝试序列化的代码/业务对象的示例?

于 2012-06-21T20:22:37.033 回答