503 (server non disponibile) WebException durante il caricamento di file XHTML locale
-
04-10-2019 - |
Domanda
Al momento sto lavorando su un'applicazione per la lettura ePub, e ho letto attraverso un mazzo di file XML normali bene con System.Xml e XmlDocument:
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Path.Combine(Directory.GetCurrentDirectory(), "META-INF/container.xml"));
XmlNodeList xnl = xmldoc.GetElementsByTagName("rootfile");
Tuttavia, ora sto cercando di aprire i file XHTML che contengono il testo vero e proprio libro, e sono file XHTML. Ora io non so davvero la differenza tra i due, ma sto ottenendo il seguente errore con questo codice (nello stesso documento, utilizzando la stessa XmlDocument e variabili XmlNodeList)
xmldoc.Load(Path.Combine(Directory.GetCurrentDirectory(), "OEBPS/part1.xhtml"));
"WebException è stata gestita: il server remoto ha restituito un errore: (503) server non disponibile"
E 'un documento locale, quindi non sto capendo perché sta dando questo errore? Qualsiasi aiuto sarebbe molto apprezzato. :)
Ho il codice sorgente completo qui se aiuta: http://drop.io/epubtest
(so che il metodo ePubConstructor.ParseDocument()
è terribilmente disordinata, sto solo cercando di farlo funzionare in questo momento, prima ho diviso in classi)
Soluzione
Prova il seguente codice non testato:
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);
}
Altri suggerimenti
Provare a rimuovere il DOCTYPE dal file XHTML, probabilmente si dispone di collegamento a un DTD esterno.
Prova il seguente codice:
XmlDocument xmldoc = new XmlDocument ();
doc.XmlResolver = null; // questo ignora la DTD
xmldoc.Load (Path.Combine (Directory.GetCurrentDirectory (), "META-INF / container.xml"));
XmlNodeList xnl = xmldoc.GetElementsByTagName ( "rootfile");