Prosljeđivanje preuzetog XML-a .NET XmlReaderu kao toka
Proslijedite proxy tok odgovora XML parseru umjesto da ga tražite da ponovno dohvati izvorni URL.
HTTP klijent preuzima XML kroz ispravni proxy. Sljedeći redak stvara XML čitač iz izvornog URL-a. Taj redak pokreće novo dohvaćanje umjesto parsiranja preuzetih podataka.
Za klijenta koji je već konfiguriran za željenu rutu, predajte njegov tok odgovora parseru:
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);
Relevantni su prostori naziva System.Xml i System.Xml.Linq. Primjer namjerno onemogućuje DTD obradu i vanjsko razrješavanje; to nije način da se kroz isti klijent dohvate proizvoljni vanjski entiteti.
Osnovni URI čuva metapodatke o lokaciji dokumenta. Ako odobreni tijek parsiranja ili validacije ipak dohvati vanjske sheme ili druge ovisnosti, ta dohvaćanja trebaju vlastiti eksplicitni razrješivač i dizajn usmjeravanja.
Ne dijagnosticirajte drugi mrežni kvar mijenjanjem lozinke na prvom, uspješnom klijentu. Utvrdite je li parser dobio tok ili URL, a zatim dodatne resurse pratite odvojeno.