这很奇怪。我有一个格式良好的 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);
}
这一切都运行良好,直到我从调试切换到发布,当我在反序列化调用中收到关于无效 XML 的错误时,抱怨文档中的最后一个字符:XML 文档中存在错误 (92, 18)。内部异常是:“根级别的数据无效。第 92 行,第 18 位”。该文档与在调试模式下生成的文档相同,并且可以在任何浏览器中正常呈现。我的猜测是,可能还有其他事情发生,真正的错误被某种方式掩盖了,但到目前为止我还没有看到。任何建议将不胜感激。
谢谢,
加里