When System.Xml encounters a public identifier, it constructs a $DEITY awful mangled URI for it, for example:
http://example.com/path/-//DTD//Example 1.0//EN
That's not going to be found in the catalog.
Because it isn't found in the catalog, the resolver has no choice but to attempt to retrieve it. So every public identifier delays the parser by the length of time it takes to make a failed HTTP round trip.
The XmlResolver should work harder to recognize these broken URIs and do public ID lookup for the public identifier.
When System.Xml encounters a public identifier, it constructs a $DEITY awful mangled URI for it, for example:
That's not going to be found in the catalog.
Because it isn't found in the catalog, the resolver has no choice but to attempt to retrieve it. So every public identifier delays the parser by the length of time it takes to make a failed HTTP round trip.
The XmlResolver should work harder to recognize these broken URIs and do public ID lookup for the public identifier.