503 (servidor no disponible) WebException al cargar archivo XHTML locales
-
04-10-2019 - |
Pregunta
Así que estoy actualmente trabajando en una aplicación de lector de ePub, y he estado leyendo a través de un montón de archivos XML regulares muy bien con System.XML y XmlDocument:
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Path.Combine(Directory.GetCurrentDirectory(), "META-INF/container.xml"));
XmlNodeList xnl = xmldoc.GetElementsByTagName("rootfile");
Sin embargo, ahora estoy tratando de abrir los archivos XHTML que contienen el texto libro real, y son archivos XHTML. Ahora bien, no se sabe muy bien la diferencia entre los dos, pero yo estoy recibiendo el siguiente error con el código (en el mismo documento, utilizando el mismo XmlDocument y variables XmlNodeList)
xmldoc.Load(Path.Combine(Directory.GetCurrentDirectory(), "OEBPS/part1.xhtml"));
"WebException fue no controlada: El servidor remoto devolvió un error: (503) de servidor no disponible"
Es un documento local, así que no estoy entendiendo por qué se da este error? Cualquier ayuda sería muy apreciada. :)
Tengo el código fuente completo aquí si ayuda: http://drop.io/epubtest
(sé el método ePubConstructor.ParseDocument()
es terriblemente desordenado, sólo estoy tratando de conseguir que funcione en el momento antes de dividirlo en clases)
Solución
Pruebe el siguiente código no probado:
XmlDocument xmldoc = new XmlDocument();
XmlReaderSettings settings = new XmlReaderSettings
{
XmlResolver = new XmlUrlResolver()
};
using (var reader = XmlReader.Create(
Path.Combine(Directory.GetCurrentDirectory(),
"OEBPS/part1.xhtml"), settings))
{
xmlDoc.Load(reader);
}
Otros consejos
Trate de eliminar el DOCTYPE del archivo XHTML, probablemente usted tiene un enlace a una DTD externa.
Pruebe el siguiente código:
xmldoc XmlDocument = new XmlDocument ();
doc.XmlResolver = null; // esto ignora el DTD
xmldoc.Load (Path.Combine (Directory.GetCurrentDirectory () "META-INF / container.xml"));
XmlNodeList XNL = xmldoc.GetElementsByTagName ( "rootfile");