503(サーバーは利用できない)ローカルXHTMLファイルをロードするときのWebException
-
04-10-2019 - |
質問
現在、私はEpub Readerアプリケーションに取り組んでおり、System.xmlとXmldocumentを使用して、通常のXMLファイルをたくさん読んでいます。
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Path.Combine(Directory.GetCurrentDirectory(), "META-INF/container.xml"));
XmlNodeList xnl = xmldoc.GetElementsByTagName("rootfile");
ただし、実際の本のテキストを含むXHTMLファイルを開こうとしています。XHTMLファイルです。今、私はこの2つの違いを本当に知りませんが、このコードで次のエラーが発生します(同じドキュメントで、同じxmldocumentとxmlnodelist変数を使用しています)
xmldoc.Load(Path.Combine(Directory.GetCurrentDirectory(), "OEBPS/part1.xhtml"));
「WebExceptionが処理されていませんでした:リモートサーバーはエラーを返しました:(503)サーバーは利用できません」
それはローカルドキュメントなので、なぜこのエラーを発しているのか理解していませんか?どんな助けも大歓迎です。 :)
それが役立つならば、私はここに完全なソースコードを持っています:http://drop.io/epubtest
(私は知っています ePubConstructor.ParseDocument()
方法は恐ろしく厄介です、私はそれをクラスに分割する前にそれを機能させようとしています)
解決
テストされていないコードを試してください。
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);
}
他のヒント
XHTMLファイルからDoctypeを削除してみてください。おそらく外部DTDへのリンクがあります。
次のコードを試してください。
xmldocument xmldoc = new xmldocument();
doc.xmlresolver = null; //これはDTDを無視します
xmldoc.load(path.combine(directory.getCurrentDirectory()、 "meta-inf/container.xml"));
xmlnodelist xnl = xmldoc.getelementsbytagname( "rootfile");