პროქსის 407 შეცდომები გარე DTD-ებიდან და XML რესურსებიდან
თვალი ადევნეთ მოულოდნელ 407-ს დოკუმენტის გარდაქმნისას გარე DTD-ებზე, სქემებზე ან პარსერის მიერ გახსნილ სხვა რესურსებზე.
ლოკალურმა დოკუმენტმა გარდაქმნის დროს მაინც შეიძლება გამოიწვიოს 407. მისმა XML-მა შეიძლება დაასახელოს DTD, სქემა ან ერთეული, და რენდერერმა შეიძლება მოიტანოს სტილები ან სურათები. წარუმატებელი კლიენტი შეიძლება იმ პარსერის შიგნით იყოს, საწყისი ჩამოტვირთვის დასრულების შემდეგ.
შეინახეთ გამონაკლისის სტეკი და მოთხოვნილი URI, შემდეგ შეადარეთ ისინი შეყვანის დეკლარაციებს ან რესურსების მითითებებს. სტანდარტულ ჰოსტზე DTD-ის მოთხოვნა გვერდის მოთხოვნისგან განსხვავებული ოპერაციაა. HTML-იდან PDF-ში გარდაქმნა ასევე შეიძლება ჩავარდეს დისტანციური რესურსების მოტანისას.
.NET XmlReader-ის შეყვანისთვის, რომლის ხელშეკრულება კრძალავს DTD-ებს და გარე გადაწყვეტას, გამოიყენეთ:
var settings = new XmlReaderSettings
{
DtdProcessing = DtdProcessing.Prohibit,
XmlResolver = null
};გადაეცით ეს პარამეტრები იმ კომპონენტს, რომელიც რეალურად აანალიზებს დოკუმენტს. DtdProcessing ირჩევს, როგორ დამუშავდეს DTD; XmlResolver აკონტროლებს გარე წვდომას. Prohibit უარყოფს DTD-ის მქონე დოკუმენტს—ის არ შლის დეკლარაციას. თუ სამუშაო ნაკადს ერთი სჭირდება, აირჩიეთ დამტკიცებული ლოკალური გადაწყვეტა ან მკაფიოდ მიმართული resolver.
შეინარჩუნეთ ნაგულისხმევი მნიშვნელობების კავშირი API/გაშვების გარემოსთან. XmlReaderSettings ნაგულისხმევად იყენებს Prohibit-ს, და მისი ნაგულისხმევი resolver .NET Framework 4.5.2-დან null-ად შეიცვალა. მესამე მხარის კონვერტორმა შეიძლება გადააწეროს ისინი ან სხვა პარსერი გამოიყენოს.
XHTML დეკლარაციის HTML doctype-ად შეცვლამ შეიძლება გავლენა მოახდინოს ერთ კონვერტორზე, მაგრამ არ აყენებს მის პროქსის. განსაზღვრეთ საჭირო რესურსები და მათი ჩატვირთვის პოლიტიკა; საწყისი გვერდის კლიენტზე ავთენტიფიკაცია არ ავთენტიფიცირებს ამ მეორე კლიენტს.