2009-01-20 34 views
0

似乎SQL Server Integration Services 2005中存在一個錯誤,在某些情況下,它會將零長度字符串轉換爲單個字符字符串,其字符恰好是一個ANSI空值,即。 ascii字符爲零(請注意,這與sql null非常不同)。Web服務響應中的空字符導致XML文檔錯誤

這發生在我們的一個數據加載過程中,因此應該爲空的地址行會將這些字符包含在其中。

我們通過網絡服務公開這些數據,數據序列化正常。空值甚至可以通過標準的XSL剝離時,Web服務響應通過IE瀏覽然而,當您查看源代碼,你可以看到他們:

Addr2="�" 

可是,當你調用從.NET這個服務生成的代理,你得到一個錯誤:

"There is an error in XML document" 

這大概是因爲null終止了文檔,因此使其無效。

雖然我們可以盡力阻止這些數據進入數據庫,但有什麼辦法可以防止代理代碼在響應中出現錯誤?我們並不是真的想要將代碼添加到我們的所有Web方法中來檢測和刪除這些方法。

回答

1

我有類似的問題,雖然它發生在我們自己的網絡服務。爲了診斷問題,我調試了生成的XmlSerializer DLL。您可以通過添加

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

請參閱MSDN文章的詳細信息。

我們能夠解決Web服務端的問題。

另一種解決方案可在this location找到。

+0

感謝您的配置提示。這很有用。我不太確定其他鏈接中的解決方案,因爲問題是用ascii零字符而不是null來做更多的事情(如果您欣賞細微差別) – 2009-01-29 13:06:18