Send downloadet XML til .NET XmlReader som en stream
Giv XML-parseren den proxyede svarstream i stedet for at bede den hente den oprindelige URL igen.
HTTP-klienten downloader XML'en gennem den rigtige proxy. Den næste linje opretter en XML-læser ud fra den oprindelige URL. Den linje starter en ny hentning i stedet for at parse de downloadede data.
For en klient, der allerede er konfigureret med den tilsigtede rute, skal du give dens svarstream til parseren:
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 relevante navnerum er System.Xml og System.Xml.Linq. Eksemplet deaktiverer DTD-behandling og ekstern opløsning med vilje; det er ikke en måde at hente vilkårlige eksterne entiteter gennem den samme klient.
Basis-URI'en bevarer dokumentets placeringsmetadata. Hvis et godkendt parse- eller valideringsworkflow faktisk henter eksterne skemaer eller andre afhængigheder, kræver disse hentninger deres egen eksplicitte resolver og routingdesign.
Diagnosticér ikke en anden netværksfejl ved at ændre adgangskoden på den første, velfungerende klient. Fastslå, om parseren modtog en stream eller en URL, og følg derefter eventuelle yderligere ressourcer separat.