0

这很奇怪。我有一个格式良好的 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 位”。该文档与在调试模式下生成的文档相同,并且可以在任何浏览器中正常呈现。我的猜测是,可能还有其他事情发生,真正的错误被某种方式掩盖了,但到目前为止我还没有看到。任何建议将不胜感激。

谢谢,

加里

4

1 回答 1

0

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

于 2012-09-06T12:42:01.833 回答