Lỗi proxy 407 từ DTD và tài nguyên XML bên ngoài
Theo dõi lỗi 407 bất ngờ khi chuyển đổi tài liệu tới DTD, lược đồ hoặc tài nguyên bên ngoài khác do trình phân tích mở.
Một tài liệu cục bộ vẫn có thể gây ra 407 trong quá trình chuyển đổi. XML của nó có thể nêu một DTD, lược đồ hoặc thực thể, và trình kết xuất có thể tải kiểu dáng hoặc hình ảnh. Ứng dụng khách bị lỗi có thể nằm bên trong trình phân tích đó, sau khi quá trình tải xuống ban đầu kết thúc.
Giữ lại ngăn xếp ngoại lệ và URI được yêu cầu, rồi đối chiếu với khai báo đầu vào hoặc tham chiếu tài nguyên. Yêu cầu DTD tới một máy chủ chuẩn là thao tác khác với yêu cầu trang. Việc chuyển đổi HTML sang PDF cũng có thể thất bại khi lấy tài nguyên từ xa.
Với đầu vào .NET XmlReader có hợp đồng cấm DTD và phân giải bên ngoài, hãy dùng:
var settings = new XmlReaderSettings
{
DtdProcessing = DtdProcessing.Prohibit,
XmlResolver = null
};Truyền các cài đặt đó cho thành phần thực sự phân tích tài liệu. DtdProcessing chọn cách xử lý DTD; XmlResolver kiểm soát truy cập bên ngoài. Prohibit từ chối tài liệu có DTD—nó không xóa khai báo. Nếu quy trình làm việc cần một DTD, hãy chọn phân giải cục bộ đã được phê duyệt hoặc resolver được định tuyến rõ ràng.
Giữ giá trị mặc định gắn với API/thời gian chạy. XmlReaderSettings dùng Prohibit theo mặc định, và resolver mặc định của nó đã đổi thành null từ .NET Framework 4.5.2. Một trình chuyển đổi của bên thứ ba có thể ghi đè hoặc dùng trình phân tích khác.
Đổi khai báo XHTML thành doctype HTML có thể ảnh hưởng một trình chuyển đổi, nhưng không cấu hình proxy của nó. Hãy xác định tài nguyên cần thiết và chính sách tải của chúng; việc xác thực trên ứng dụng khách của trang đầu không xác thực ứng dụng khách thứ hai này.