Prosleđivanje preuzetog XML-a .NET XmlReader-u kao toka
Prosleđujte proxy tok odgovora XML parseru umesto da ga terate da ponovo dohvati originalni URL.
HTTP klijent preuzima XML kroz ispravni proxy. Sledeći red kreira XML čitač iz originalnog URL-a. Taj red pokreće novo dohvatanje umesto parsiranja preuzetih podataka.
Za klijenta koji je već konfigurisan 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 imenski prostori su System.Xml i System.Xml.Linq. Primer namerno onemogućava DTD obradu i eksterno razrešavanje; to nije način da se kroz isti klijent dohvate proizvoljni spoljni entiteti.
Osnovni URI čuva metapodatke o lokaciji dokumenta. Ako odobreni tok parsiranja ili validacije ipak dohvati spoljne šeme ili druge zavisnosti, ta dohvatanja zahtevaju sopstveni eksplicitni razrešivač i dizajn usmeravanja.
Ne dijagnostikujte drugi mrežni kvar menjanjem lozinke na prvom, uspešnom klijentu. Utvrdite da li je parser dobio tok ili URL, a zatim dodatne resurse pratite odvojeno.