Игнорировать DOCTYPE .dtd, но файл .dtd все еще должен существовать

У меня есть веб-служба, которая обрабатывает HTTP-запросы. Документ, который он получает, имеет встроенный DOCTYPE, который определяет файл .dtd. Я хочу использовать новый файл проверки схемы XML, созданный для случаев, когда новые устройства подключаются к моей службе.

Я могу успешно игнорировать проверку, которая выполняется в файле .dtd, но файл .dtd должен существовать на моем локальном жестком диске . Я хочу удалить эти устаревшие файлы и не нашел способа.

Образец XML-документа, который я обрабатываю:

<?xml version="1.0" encoding="us-ascii" standalone="no"?>
<!DOCTYPE SomeMessage SYSTEM "SomeMessage.dtd">
<SomeMessage>data</SomeMessage>

Функция, которую я использую для открытия документа:

private void LoadXmlDoc(XmlTextReader myXmlTextReader)
{
    XmlReaderSettings readerSettings = new XmlReaderSettings();
    readerSettings.ValidationType = ValidationType.Schema;
    readerSettings.Schemas.Add(null, MyGoodSchemaFile);
    readerSettings.DtdProcessing = DtdProcessing.Ignore;
    readerSettings.XmlResolver = null; // Added as a test.

    readerSettings.ValidationEventHandler += ValidationEventHandle;
    XmlReader myXmlReader = XmlReader.Create(myXmlTextReader, readerSettings);

    XmlDocument myXmlDocument = new XmlDocument();
    myXmlDocument.XmlResolver = null; // Added as a test.
    myXmlDocument.Load(myXmlReader); // Exception thrown here!
}

Обнаруженное исключение:

System.IO.FileNotFoundException: Could not find file 'c:\windows\system32\inetsrv\SomeMessage.dtd'.
File name: 'c:\windows\system32\inetsrv\SomeMessage.dtd'
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)

Содержимое файла SomeMessage.dtd не используется - оно игнорируется по моему желанию. Однако фиктивный файл "c: \ windows \ system32 \ inetsrv \ SomeMessage.dtd" должен существовать, в противном случае возникает исключение.

Я работаю в Windows 7, использую Visual Studio 2010 и .Net 4.0

Как я могу игнорировать встроенный .dtd и не требовать, чтобы на моем компьютере был установлен фиктивный файл .dtd ?

6
задан dtb 8 October 2010 в 21:18
поделиться