XmlSerializer反序列化在发布模式下失败

时间:2012-09-06 12:26:28

标签: c# xml serialization

这很奇怪。我有一个配置文件,它是格式良好的XML。我从文件创建一个流,并使用看起来非常典型的代码序列化它:

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);
        }       

这一切都运行良好,直到我从Debug切换到Release,当我在Deserialize调用中遇到关于无效XML的错误时,抱怨文档中的最后一个字符:XML文档中有错误(92,18) )。内部异常是:“根级别的数据无效。第92行,第18位”。该文档与在调试模式下生成的文档相同,并且在任何浏览器中都可以呈现。我的猜测是,可能还有其他事情发生了,真正的错误在某种程度上被掩盖了,但到目前为止我还没有看到它。任何建议都将不胜感激。

谢谢,

加里

1 个答案:

答案 0 :(得分:0)

在十六进制编辑器或其他二进制编辑器中加载XML文件,并检查不可打印的字符,如编码前导码。