Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XmlSerializer反序列化在发布模式下失败_C#_Xml_Serialization - Fatal编程技术网

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

C# XmlSerializer反序列化在发布模式下失败,c#,xml,serialization,C#,Xml,Serialization,这很奇怪。我有一个格式良好的XML配置文件。我从文件中创建了一个流,并使用非常典型的代码对其进行序列化: TextWriter tw = new StreamWriter(tempFile); 我使用的序列化程序如下所示: XmlSerializer ConfigSettingSerializer = new XmlSerializer(typeof(ConfigSettings)); 其中ConfigSettings只是一个包含字符串变量和值的容器类 然后,我使用Configuration

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

谢谢


Gary

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

如果将XML缩短到最小值,会发生什么?您是否仍然得到错误?如果将configsettings类最小化为只包含一个值,可能的解决方案我仍然得到相同的错误。