503 (الخادم غير متوفر) WebException عند تحميل ملف XHTML المحلي
-
04-10-2019 - |
سؤال
لذلك أنا أعمل حاليًا على تطبيق قارئ EPUB ، وكنت أقرأ من خلال مجموعة من ملفات XML العادية على ما يرام مع System.xml و XmlDocument:
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Path.Combine(Directory.GetCurrentDirectory(), "META-INF/container.xml"));
XmlNodeList xnl = xmldoc.GetElementsByTagName("rootfile");
ومع ذلك ، أحاول الآن فتح ملفات XHTML التي تحتوي على نص الكتاب الفعلي ، وهي ملفات XHTML. الآن لا أعرف حقًا الفرق بين الاثنين ، لكنني أحصل على الخطأ التالي مع هذا الرمز (في نفس المستند ، باستخدام نفس متغير XMLDOCUMINE و 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);
}
نصائح أخرى
حاول إزالة doctype من ملف XHTML ، وربما يكون لديك رابط إلى DTD خارجي.
جرب الرمز التالي:
xmldocument xmldoc = new xmldocument () ؛
doc.xmlresolver = null ؛ // هذا يتجاهل DTD
xmldoc.load (path.combine (directory.getCurrentDirectory () ، "meta-inf/container.xml") ؛
xmlnodelist xnl = xmldoc.getElementSbyTagName ("rootfile") ؛