Передавання завантаженого 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, а потім окремо відстежуйте будь-які додаткові ресурси.