Skicka nedladdad XML till .NET XmlReader som en ström
Ge XML-tolkaren den proxyade svarsströmmen i stället för att låta den hämta den ursprungliga URL:en igen.
HTTP-klienten laddar ner XML:en via rätt proxy. Nästa rad skapar en XML-läsare från den ursprungliga URL:en. Den raden startar en ny hämtning i stället för att tolka de nedladdade data.
För en klient som redan är konfigurerad med den avsedda vägen, ge dess svarsström till tolken:
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);
De relevanta namnrymderna är System.Xml och System.Xml.Linq. Exemplet stänger av DTD-bearbetning och extern upplösning avsiktligt; det är inte ett sätt att hämta godtyckliga externa entiteter via samma klient.
Bas-URI:n bevarar dokumentets platsmetadata. Om ett godkänt tolknings- eller valideringsarbetsflöde faktiskt hämtar externa scheman eller andra beroenden, behöver dessa hämtningar sin egen explicita resolver och routingdesign.
Diagnostisera inte ett andra nätverksfel genom att ändra lösenordet på den första, fungerande klienten. Fastställ om tolken fick en ström eller en URL och följ sedan eventuella ytterligare resurser separat.