Passare l'XML scaricato a .NET XmlReader come flusso
Passa il flusso di risposta intermediato dal proxy al parser XML invece di chiedergli di recuperare di nuovo l'URL originale.
Il client HTTP scarica l'XML attraverso il proxy corretto. La riga successiva crea un lettore XML dall'URL originale. Quella riga avvia un'altra richiesta invece di analizzare i dati scaricati.
Per un client già configurato con il percorso previsto, consegna il suo flusso di risposta al 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);
Gli spazi dei nomi rilevanti sono System.Xml e System.Xml.Linq. L'esempio disattiva deliberatamente l'elaborazione DTD e la risoluzione esterna; non è un modo per recuperare entità esterne arbitrarie tramite lo stesso client.
L'URI di base conserva i metadati di posizione del documento. Se un flusso di lavoro di analisi o convalida approvato recupera davvero schemi esterni o altre dipendenze, tali recuperi richiedono un proprio resolver esplicito e una progettazione del routing.
Non diagnosticare un secondo errore di rete cambiando la password del primo client, quello funzionante. Stabilisci se il parser ha ricevuto un flusso o un URL, poi segui separatamente eventuali risorse aggiuntive.