我继承了一些无效的代码。当然它在最后一次提交时工作正常,但不知何故它现在还没有返回好的数据。历史日志显示数据如下所示:
[0] => SimpleXMLElement Object
(
[Patron_Key] => 412730
[x3.32] => 4A
[x3.1] => 2014-01-08T08:00:00-07:00
[x3.2] => 2014-01-22T07:59:59-07:00
)
有效字段名称是x3.32。有意地将'x'添加到列名称中。但是,现在XML在字段名称中带有前导零,如下所示:
<Patron_Key>363384</Patron_Key>
<_x0033_.32>BC4S4B</_x0033_.32>
<_x0033_.1>2013-08-15T08:00:00-06:00</_x0033_.1>
<_x0033_.2>2014-05-13T07:59:59-06:00</_x0033_.2>
到目前为止,我已经检查过使用PowerShell通过COM +来自数据库的数据是否有效。这让我觉得它是IIS中的代码或其他东西。每当我在COM +调用之后在代码中记录数据以及将它放入DataTable时,它看起来很好。正在使用的数据结构具有DataContract属性,并且所有类成员都具有DataMember属性。有没有一种方法可以在序列化/反序列化之后检查数据,看看是否正在添加前导'003'?
任何关于我可能会在哪里看到的想法都会受到赞赏。我正在努力获得一个新的Web服务器,以确保它与IIS无关。
更新:
原来,问题是因为列名中的第一个字符是数字,而XML节点不能以数字开头。我们发现GitHub评论让我们朝着正确的方向发展,但我也链接到一篇SO帖子,更详细地描述了这个问题。哦,有人介绍了一些代码,这些代码没有正确检测列的第一个字符中的数字 - 5个月前,所以我们不得不深入研究一大堆提交以找到违规的更改。
答案 0 :(得分:0)
我看到两个问题:
第一个是我可以明确回答的问题:如果您能够在调试模式下运行应用程序并逐步执行代码,您应该能够使用调试器逐步执行序列化/反序列化并检查内容使用手表的变量。现在,您可能必须参与远程调试器,具体取决于代码的运行位置,如果您有辅助进程,则可能需要运行多个Visual Studio实例,并在调试模式下运行应用程序的EACH部分以正确跟踪问题,但这是调试器的用途。