Przekazywanie pobranego XML do .NET XmlReader jako strumienia
Przekaż strumień odpowiedzi z proxy do parsera XML, zamiast kazać mu ponownie pobierać pierwotny URL.
Klient HTTP pobiera XML przez właściwe proxy. Następny wiersz tworzy czytnik XML z pierwotnego URL. Ten wiersz rozpoczyna kolejne pobieranie zamiast analizować pobrane dane.
W przypadku klienta skonfigurowanego już z zamierzoną trasą przekaż jego strumień odpowiedzi do parsera:
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);
Odpowiednie przestrzenie nazw to System.Xml i System.Xml.Linq. Przykład celowo wyłącza przetwarzanie DTD i rozwiązywanie zewnętrzne; nie jest to sposób pobierania dowolnych encji zewnętrznych przez tego samego klienta.
Bazowy URI zachowuje metadane lokalizacji dokumentu. Jeśli zatwierdzony przepływ analizy lub walidacji rzeczywiście pobiera zewnętrzne schematy lub inne zależności, te pobrania wymagają własnego jawnego resolvera i projektu routingu.
Nie diagnozuj drugiej awarii sieci, zmieniając hasło w pierwszym, działającym kliencie. Ustal, czy parser otrzymał strumień, czy URL, a następnie śledź ewentualne dodatkowe zasoby osobno.