【问题标题】:Null characters in web service response causes XML document errorWeb 服务响应中的空字符导致 XML 文档错误
【发布时间】:2009-01-20 18:24:45
【问题描述】:

SQL Server Integration Services 2005 中似乎存在一个错误,在某些情况下,该错误将零长度字符串转换为单个字符串,其字符恰好是 ansi null,即。 ascii 字符零(请注意,这与 sql null 非常不同)。

这发生在我们的一个数据加载过程中,因此应该为空的地址行会在其中获取这些字符。

我们通过 Web 服务公开这些数据,并且数据可以序列化。当通过 IE 查看 Web 服务响应时,标准 XSL 甚至会去除空值,但是当您查看源代码时,您可以看到它们:

Addr2="�"

但是当您从 .Net 生成的代理调用此服务时,您会收到错误:

"There is an error in XML document"

这可能是因为 null 终止了文档并因此使其无效。

虽然我们可以尽最大努力防止这些值进入数据库,但是当这些值在响应中时,有什么方法可以防止代理代码出错?我们真的不想在我们所有的网络方法中添加代码来检测和删除这些。

【问题讨论】:

    标签: web-services soap xml-serialization asmx


    【解决方案1】:

    我遇到了类似的问题,虽然它发生在我们自己的网络服务中。为了诊断问题,我调试了生成的 XmlSerializer DLL。你可以通过添加来做到这一点

    <system.diagnostics>
      <switches>
        <add name="XmlSerialization.Compilation" value="4"/>
      </switches>
    </system.diagnostics>
    

    详见MSDN文章。

    我们能够在 Web 服务端解决问题。

    另一个解决方案可以在this location找到。

    【讨论】:

    • 感谢您的配置提示。这可能很有用。我不太确定其他链接中的解决方案,因为问题是使用 ascii 零字符而不是 null 做更多事情(如果您欣赏细微差别)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 2010-10-23
    • 2023-03-09
    • 2012-09-23
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    相关资源
    最近更新 更多