我有一个用于XML验证的c#库。在库中,我使用以下代码针对XSD验证XML。
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,则一切正常。我可以向XmlSchemaSet添加50个以上的架构,并且不会在XSDValidationHandler上引发任何错误。整个过程不到一秒钟。
我创建一个单元测试项目来测试DLL。当我从测试中调用库,并且代码首次执行时,执行以下行:schemaSheet.Add(schema); ....尝试将XSD添加到schemaSheet大约需要30秒。当结束并添加下一个架构时,我在XSDValidationHandler上出现了错误(找不到schemalocation和其他类似的东西)。
为什么我有这个问题?库是否应该在Web项目和测试项目中以相同的方式工作?
另一件事...如果在测试进入schemaSheet.Add(schema)行时断开了网络连接,第一次不需要30秒...但是我在XSDValidationHandler上仍然有错误。
schemaSet.Add方法是否尝试在某处连接?或下载一些内容?
谢谢。