Татаж авсан XML-ийг .NET XmlReader-т урсгал хэлбэрээр дамжуулах
Анхны URL-ийг дахин татахыг шаардахын оронд проксигоор дамжсан хариу урсгалыг XML задлагчид өгнө үү.
HTTP клиент XML-ийг зөв проксигоор татна. Дараагийн мөр анхны URL-ээс XML уншигч үүсгэдэг. Тэр мөр татсан өгөгдлийг задлахын оронд өөр нэг таталт эхлүүлдэг.
Зориулсан замаар аль хэдийн тохируулагдсан клиентэд хариу урсгалыг нь задлагчид өгнө үү:
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 авсан уу гэдгийг тогтоож, дараа нь нэмэлт нөөцүүдийг тусад нь хянаарай.