Heruntergeladenes XML als Stream an .NET XmlReader übergeben
Übergib den proxied Antwortstream an den XML-Parser, statt ihn die ursprüngliche URL erneut abrufen zu lassen.
Der HTTP-Client lädt das XML über den richtigen Proxy herunter. Die nächste Zeile erzeugt einen XML-Reader aus der ursprünglichen URL. Diese Zeile startet einen weiteren Abruf, statt die heruntergeladenen Daten zu parsen.
Für einen Client, der bereits mit der beabsichtigten Route konfiguriert ist, übergib seinen Antwortstream an den Parser:
using var response = await client.GetAsync(documentUri);
response.EnsureSuccessStatusCode();
using var stream = await response.Content.ReadAsStreamAsync();
var settings = new XmlReaderSettings
{
DtdProcessing = DtdProcessing.Prohibit,
XmlResolver = null
};
using var reader = XmlReader.Create(stream, settings, documentUri.AbsoluteUri);
var document = XDocument.Load(reader);
Die relevanten Namespaces sind System.Xml und System.Xml.Linq. Das Beispiel deaktiviert DTD-Verarbeitung und externe Auflösung bewusst; es ist kein Weg, beliebige externe Entitäten über denselben Client abzurufen.
Die Basis-URI bewahrt die Ortsmetadaten des Dokuments. Wenn ein genehmigter Parsing- oder Validierungsworkflow tatsächlich externe Schemata oder andere Abhängigkeiten abruft, benötigen diese Abrufe einen eigenen expliziten Resolver und ein eigenes Routing-Design.
Diagnostiziere einen zweiten Netzwerkfehler nicht, indem du das Passwort des ersten, funktionierenden Clients änderst. Stelle fest, ob der Parser einen Stream oder eine URL erhalten hat, und verfolge dann etwaige zusätzliche Ressourcen getrennt.