2012-09-06 63 views
0

這很奇怪。我有一個配置文件,它是格式良好的XML。我從文件創建流並使用似乎是非常典型的代碼序列化:XmlSerializer反序列化在發佈模式下失敗

TextWriter tw = new StreamWriter(tempFile); 

我使用創造了一個串行如下:

XmlSerializer ConfigSettingSerializer = new XmlSerializer(typeof(ConfigSettings)); 

哪裏ConfigSettings僅僅是一個包含容器類的字符串變量和值。

然後我使用序列化的流並使用ConfigurationManager類和AppSettings將其作爲配置存儲起來。然後,我檢索的appSettings序列化的數據,並嘗試將數據流轉換回原班:

string configXml = ConfigurationManager.AppSettings[Id]; 
using (StringReader reader = new StringReader(configXml)) 
     {     
      retVal = (ConfigSettings)MVHelper.ConfigSettingSerializer.Deserialize(reader); 
     }  

這一切都工作得很好,直到我從調試開關可以鬆開,當我在有關反序列化調用得到一個錯誤無效的XML,抱怨文檔中最後一個字符:XML文檔中存在錯誤(92,18)。內部例外情況是:「根級數據無效,92行,18位」。該文檔與在調試模式下生成的文檔相同,並且在任何瀏覽器中呈現良好。我的猜測是,可能還有其他事情在發生,真正的錯誤在某種程度上被掩蓋了,但到目前爲止我沒有看到它。任何建議將不勝感激。

謝謝,

加里

+0

如果您將xml縮短爲最小值,會發生什麼情況?你仍然得到錯誤? – Default

+0

可能的解決方案http://stackoverflow.com/q/5748668/395718 – Dialecticus

+0

最小化configsettings類以僅包含一個值我仍然得到相同的錯誤。 – Gary

回答

0

負載在十六進制編輯器或其他二進制編輯XML文件,並檢查是否有不可打印字符等的編碼前導碼。