Web服务响应中的空字符会导致XML文档错误

时间:2009-01-20 18:24:46

标签: web-services soap xml-serialization asmx

似乎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方法中添加代码来检测和删除这些代码。

1 个答案:

答案 0 :(得分:1)

我有类似的问题,虽然它发生在我们自己的网络服务中。为了诊断问题,我调试了生成的XmlSerializer DLL。您可以通过添加

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

有关详细信息,请参阅MSDN文章。

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

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