DTD запрещено в этом XML-документе, как изменить разрешения?

Я использую сторонний компонент .NET, для которого требуется файл конфигурации XML. Я использую это в приложении ASP.NET.

Я получаю сообщение об ошибке при настройке XML со следующим dtd:

<!DOCTYPE prod-config SYSTEM "cache-config.dtd">

Ошибка следующая:

По соображениям безопасности DTD запрещено в этом XML-документе. Чтобы включить обработку DTD, установите для свойства ProhibitDtd в XmlReaderSettings значение false и передайте настройки в метод XmlReader.Create.

prod-config.dtd находится в том же каталоге, что и файл конфигурации XML.

У меня нет доступа к коду компонента для изменения XmlReaderSettings, ProhibitDtd и т. д. Есть ли другой способ изменить или пометить файл XML, чтобы разрешить доступ к DTD?

(К вашему сведению, компонент - это клиент Oracle Coherence .NET)


person frankadelic    schedule 29.04.2010    source источник


Ответы (2)


Вам вообще нужно указывать DTD? Если на самом деле его ничто не использует, то было бы проще вообще опустить объявление DTD.

Эта страница на сайте Oracle предполагает, что компонент только поддерживается в .NET 1.1. Я думаю, что поведение отказа от DTD по умолчанию изменилось между .NET 1.1 и .NET 2.0. Если вы пытаетесь работать с .NET 2.0, я предлагаю вам попробовать перейти на более раннюю версию. Параллельная установка 1.1 может работать, но вам может потребоваться взломать конфигурацию, чтобы заставить ее использовать желаемую версию среды выполнения.

person Daniel Renshaw    schedule 29.04.2010
comment
Это дает ошибку: не удалось найти информацию о схеме для элемента cache-config. - person frankadelic; 29.04.2010
comment
Я думаю, что это поведение изменилось между .NET 1.1 и .NET 2. Может ли быть, что этот компонент поддерживается только в .NET 1.1? - person Daniel Renshaw; 29.04.2010

FWIW, у меня была такая же ошибка, и я изменил строку на:

<!DOCTYPE prod-config "cache-config.dtd">

и исправили ошибку. Понятия не имею, почему это работает, и я, вероятно, получу больше ошибок из-за этого.

person Henley    schedule 16.08.2013
comment
и что вы знаете, опять не работает! XML и Microsoft = уродливая смесь. Зачем нам вообще нужны DTD? Что вообще такое DTD? - person Henley; 17.08.2013