我正在維護一個遺留應用程序,該應用程序會在第一次執行一系列查詢時在某些情況下顯示暫時錯誤。是否有方法記錄從SqlCommand.ExecuteXmlReader返回的原始XML?
該應用程序使用SqlCommand.ExecuteXmlReader,它返回一個XmlReader對象。當錯誤發生時,這包含無效的XML,並且應用程序引發異常。
試試我可能無法找到一種方法來查看輸出的原始XML,然後將其傳遞給從其創建新的XPathDocument的方法。我對XmlReader對象所做的任何事情(例如嘗試記錄其內容)都會導致讀者無法使用任何其他代碼。
我正在尋找一些方法能夠簡單地記錄來自命令的所有原始XML,以便在發生錯誤時我可以看到導致錯誤的確切XML,幫助我縮小搜索範圍。
我試過克隆XmlReader,但是來自SQL的結果包含多個結果集(這是一個存儲過程與多個返回語句)。使用stringbuilder將結果轉換爲字符串,然後嘗試將該字符串轉換回XmlReader導致出現異常,因爲存在多個根節點。
有沒有任何簡單的解決方案呢?
//execute the command
var xmlReader = sqlCommand.ExecuteXmlReader();
var xpathDoc = new XPathDocument(xmlReader); //<--exception thrown here
我真的希望能夠做的是一樣的東西:
var xmlReader = sqlCommand.ExecuteXmlReader();
LogXmlResults(xmlReader);
var xpathDoc = new XPathDocument(xmlReader);
發佈例外。另外,我認爲你只是在字符串/ xml轉換中存在一個錯誤。也許你將多個結果集附加到同一個字符串? – usr
例外是十六進制字符x無效。但角色可以在錯誤之間改變。他們經常表現爲中文字。回到我的開發電腦時,可以發佈特定的異常。 –