In #25 we "fixed" the performance impact of attempting to retrieve mangled URIs caused by System.Xml.UriResolver 's broken support for public identifiers. But we did it clumsily. Instead of doing it in GetEntity, we can do it in ResolveUri which is always called first and which provides the public identifier string as a relative URI, not concatenated with a base URI.