Собирался опубликовать это, и только тогда серверы вышли из строя. Я думаю, что я переписал это правильно из памяти:
Я думаю, что проблема заключается в том, что по умолчанию XPathDocument
использует XmlTextReader
для анализа содержимого предоставленного файла, а этот XmlTextReader
использует EntityHandling
значение ExpandEntities
.
Другими словами, когда вы полагаетесь на настройки по умолчанию, XmlTextReader
проверит входной XML и попытается разрешить все сущности. Лучше всего сделать это вручную, получив полный контроль над XmlReaderSettings
(я всегда делаю это вручную):
string myXMLFile = "SomeFile.xml";
string fileContent = LoadXML(myXMLFile);
private string LoadXML(string xml)
{
XPathDocument xDoc;
XmlReaderSettings xrs = new XmlReaderSettings();
// The following line does the "magic".
xrs.CheckCharacters = false;
using (XmlReader xr = XmlReader.Create(xml, xrs))
{
xDoc = new XPathDocument(xr);
}
if (xDoc != null)
{
XPathNavigator xNav = xDoc.CreateNavigator();
return xNav.OuterXml;
}
else
// Unable to load file
return null;
}