Предавање на преземениот XML на .NET XmlReader како поток
Предајте го проксираниот тек на одговорот на XML парсерот наместо да го терате повторно да го преземе оригиналниот URL.
HTTP клиентот го презема XML-от преку правилниот прокси. Следниот ред создава XML читач од оригиналниот URL. Тој ред започнува ново преземање наместо да ги парсира преземените податоци.
За клиент веќе конфигуриран со саканата рута, предајте го неговиот тек на одговорот на парсерот:
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);
Релевантните именски простори се System.Xml и System.Xml.Linq. Примерот намерно го исклучува DTD-процесирањето и надворешното разрешување; тоа не е начин да се преземат произволни надворешни ентитети преку истиот клиент.
Основното URI ги зачувува метаподатоците за местоположбата на документот. Ако одобрен работен тек на парсирање или валидација сепак презема надворешни шеми или други зависности, тие преземања бараат свој експлицитен разрешувач и дизајн на рутирање.
Не дијагностицирајте втор мрежен дефект со менување на лозинката на првиот, успешен клиент. Утврдете дали парсерот добил тек или URL, потоа следете ги дополнителните ресурси одделно.