Локальный документ всё ещё может вызвать 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 по умолчанию был изменён на null начиная с .NET Framework 4.5.2. Сторонний конвертер может их переопределить или использовать другой парсер.

Замена объявления XHTML на HTML doctype может повлиять на один конвертер, но не настраивает его прокси. Определите необходимые ресурсы и политику их загрузки; аутентификация в клиенте начальной страницы не аутентифицирует этот второй клиент.

Похожие статьи