Прослеђивање преузетог XML-а .NET XmlReader-у као тока
Проследите proxy ток одговора XML парсеру уместо да га терате да поново дохвати оригинални URL.
HTTP клијент преузима XML кроз исправни proxy. Следећи ред креира 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, а затим додатне ресурсе пратите одвојено.