FileNotFoundException при десериализации строки XML - PullRequest
0 голосов
/ 19 июня 2019

У меня возникла странная проблема при десериализации строки 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;
    }
}

Я не уверен, как справиться с этой проблемой. Я надеюсь, что кто-нибудь может мне помочь, как более подробно проанализировать проблему или с чего начать.

...