郁闷的Xml Serialization BUG
上个星期我在一个客户端程序(一个实时处理程序,要调用一些底层的硬件,为了方便调试,我写了一个模拟底层硬件的库)里调用WebService的一个方法的时候,发现我要调用的某个方法,在IE的调试界面下,运行正确,在我使用模拟方式运行程序的时候,调用也很OK,就是当使用真实的底层硬件的时候,老是报XmlException错误。
但是,奇怪的是,我真实硬件环境下调用这个ASMX的其它方法,确总是正确。
我一开始,以为是我的模拟器有什么问题,当后来我觉得是.NET本身的问题。
于是我开始在Newgroups,在Google里查找相关的信息。尤其在Google里查找ScanHexEntity看到了和我类似的情况。从中可以看出,这是一个.NET XML Serialization Bug,然后在用Web引用时,VS.NET自动生成的Proxy里(就是SoapHttpClientProtocol)用到了XML Serialization,调用Web Service就出错了,有人也遇到了和我类似的事情。于是这个BUG就发生在我的身上了
虽然现在我解决了在真实硬件环境下调用这个WebService的方法(后面讲我的无奈的怪招),但我还是有个地方很想不通:
出问题的这个方法没有什么特别的,就是简单的public string Auth(string clientcode),和其他正常的方法没有什么特殊的。难道是clientcode由底层硬件返回的时候,这个字符串的编码有问题?
我解决这个郁闷问题的方法是,在.NET Windows Client里使用SOAP Toolkit3来调用那个讨厌的出错方法。是不是很无奈呀!
但是,奇怪的是,我真实硬件环境下调用这个ASMX的其它方法,确总是正确。
我一开始,以为是我的模拟器有什么问题,当后来我觉得是.NET本身的问题。
于是我开始在Newgroups,在Google里查找相关的信息。尤其在Google里查找ScanHexEntity看到了和我类似的情况。从中可以看出,这是一个.NET XML Serialization Bug,然后在用Web引用时,VS.NET自动生成的Proxy里(就是SoapHttpClientProtocol)用到了XML Serialization,调用Web Service就出错了,有人也遇到了和我类似的事情。于是这个BUG就发生在我的身上了

虽然现在我解决了在真实硬件环境下调用这个WebService的方法(后面讲我的无奈的怪招),但我还是有个地方很想不通:
出问题的这个方法没有什么特别的,就是简单的public string Auth(string clientcode),和其他正常的方法没有什么特殊的。难道是clientcode由底层硬件返回的时候,这个字符串的编码有问题?
我解决这个郁闷问题的方法是,在.NET Windows Client里使用SOAP Toolkit3来调用那个讨厌的出错方法。是不是很无奈呀!

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器