У меня есть библиотека c# для проверки XML. Внутри библиотеки я использую следующий код для проверки XML в отношении XSD.
XmlSchemaSet schemaSheet = new XmlSchemaSet();
schemaSheet.ValidationEventHandler += new ValidationEventHandler(XSDValidationHandler);
string[] xsdFiles = GetSchemas();
foreach (string file in xsdFiles)
{
Stream fs = GetSchemaResource(anXsd); <---Get a XSD that is in a embedded resource
var schema = XmlSchema.Read(fs, null);
schemaSheet.Add(schema);
}
schemaSheet.Compile();
Если использовать эту DLL с веб-сайта, все работает нормально. Я могу добавить более 50 схем в XmlSchemaSet и не вызывать никаких ошибок в XSDValidationHandler. Весь процесс занимает меньше секунды.
Я создаю проект модульного теста для проверки DLL. Когда я вызываю библиотеку из теста и код выполняет в первый раз строку schemaSheet.Add (schema); .... требуется около 30 секунд, чтобы добавить XSD в схему. Когда заканчивается и go для добавления следующей схемы у меня возникают ошибки, возникающие в XSDValidationHandler (расположение схемы не найдено и другие подобные).
Почему у меня возникает эта проблема? Разве библиотека не должна работать одинаково как с веб-проектом, так и с тестовым проектом?
Другое дело ... Если я отключаю сетевое соединение, когда тест переходит к строке schemaSheet.Add (схема) ; в первый раз не занимает 30 секунд ... но у меня все еще возникают ошибки в XSDValidationHandler.
Метод schemaSet.Add пытается подключиться где-нибудь? или что-то скачать?
Спасибо.