Ipasa ang Na-download na XML sa .NET XmlReader bilang Stream
Ipasa ang proxied na stream ng tugon sa XML parser sa halip na hilingin itong kunin muli ang orihinal na URL.
Dinodownload ng HTTP client ang XML sa tamang proxy. Gumagawa ang susunod na linya ng XML reader mula sa orihinal na URL. Nagsisimula ang linyang iyon ng panibagong pagkuha sa halip na i-parse ang na-download na data.
Para sa client na naka-configure na sa nilalayong ruta, ibigay ang stream ng tugon nito sa 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);
Ang kaugnay na mga namespace ay System.Xml at System.Xml.Linq. Sinasadya ng halimbawa na i-disable ang pagproseso ng DTD at panlabas na resolution; hindi ito paraan para kumuha ng arbitraryong panlabas na entity sa pamamagitan ng parehong client.
Pinapanatili ng base URI ang metadata ng lokasyon ng dokumento. Kung ang isang aprubadong daloy ng trabaho ng pag-parse o pagpapatunay ay kumukuha ng panlabas na schema o iba pang dependency, kailangan ng mga pagkuha na iyon ng sarili nilang tahasang resolver at disenyo ng routing.
Huwag i-diagnose ang pangalawang pagkabigo ng network sa pamamagitan ng pagpalit ng password sa unang client na nagtagumpay. Alamin kung stream o URL ang natanggap ng parser, pagkatapos ay subaybayan nang hiwalay ang anumang karagdagang resource.