在反序列化XML字符串时遇到一个奇怪的问题。清除本地临时文件夹后,该问题消失。重新启动PC后,错误再次出现,我需要再次清除本地temp文件夹以使其再次运行。
System.InvalidOperationException: There is an error in XML document (0, 0). ---> System.IO.FileNotFoundException: The system cannot find the file specified. (Exception from HRESULT: 0x80070002)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderReportDescription.Read97_ReportDescription()
--- End of inner exception stack trace ---
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at System.Xml.Serialization.XmlSerializer.Deserialize(TextReader textReader)
at Reporting.DataModel.XmlDBReportRepository.Deserialize[T](String xml) in C:\Projects\.NET Tools\SuperlinkGraph\Reporting.DataModel\XmlDBReportRepository.cs:line 181
我将XML字符串打印到文本文件中,以检查其是否有效。我使用XML验证程序验证了XML字符串,似乎是正确的。这是XML的前两行。
<?xml version="1.0" encoding="utf-16"?>
<ReportDescription xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
当我尝试反序列化字符串变量时,我不理解为什么应用程序会引发FileNotFoundException。我使用过程监视器工具来尝试跟踪问题,没有任何运气。
public T Deserialize<T>(string xml)
{
try
{
XmlSerializer ser = new XmlSerializer(typeof(T), GetExtraTypes());
File.AppendAllText(@"C:\Temp\Xml.txt", xml);
return (T)ser.Deserialize(new StringReader(xml)); //Line 181
}
catch (Exception e)
{
File.AppendAllText(@"C:\Temp\Exception.txt", e.ToString());
throw;
}
}
我不确定该如何处理。我希望任何人都可以指导我完成如何更详细地分析问题或从何处着手的问题。