У меня возникла странная проблема при десериализации строки XML. Проблема исчезает при очистке локальной временной папки. Ошибка появляется снова после перезагрузки компьютера, и мне нужно снова очистить локальную временную папку, чтобы он снова запустился.
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, когда я пытаюсь десериализовать строковую переменную. Я использовал Process Monitor Tool, чтобы попытаться отследить проблему без какой-либо удачи.
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;
}
}
Я не уверен, как справиться с этой проблемой. Я надеюсь, что кто-нибудь может мне помочь, как более подробно проанализировать проблему или с чего начать.