【发布时间】:2012-06-26 21:45:15
【问题描述】:
我一直在努力解决这个问题。非常欢迎任何想法!
我在 vb.net 中有一个使用 MSMQ 的客户端/侦听器应用程序,当我不使用 sgen.exe 在编译时生成序列化时,它可以 100% 正常工作。
当使用 sgen 时,它在侦听器部分失败。
qOrders.Formatter = New XmlMessageFormatter(New Type() {GetType(InfoMessage)})
m = qOrders.EndReceive(e.AsyncResult)
它会轰炸 m。 m.Body 有错误"Cannot deserialize the message passed as an argument. Cannot recognize the serialization format.",其余属性也有没有接收到值的错误。
程序集具有强名称,并且 App.XmlSerializers.dll 也已正确签名。我知道这个 dll 被使用了,因为我无法在程序运行时删除它。
InfoMessage 类是一个简单的公共类,具有 3 个公共字符串成员。使用 Reflector 检查 dll,我确实看到 sgen 已经生成了一个 InfoMessageSerializer 类。
问题不在客户端,因为我删除了 dll 并运行了侦听器,它照常工作。
那么,这里有什么问题吗? :o
谢谢,
约翰
编辑:链接到监听器来源:http://pastebin.com/TqWfLVJ0
【问题讨论】:
标签: .net vb.net xml-serialization msmq xmlserializer