Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.
Tür XmlResolver , varlıklar, belge türü tanımları (DTD'ler) veya şemalar gibi dış XML kaynaklarını çözümlemek için kullanılır. Genişletilebilir Stil Sayfası Dili (XSL) stil sayfalarında veya XML Şeması tanım dili (XSD) şemalarında bulunan öğeleri dahil etmek ve içeri aktarmak için de kullanılır.
XmlResolver güvenlik kimlik bilgilerini işleme, veri kaynağı bağlantısını açma ve kaynağı bir akış veya başka bir nesne türü biçiminde döndürme dahil olmak üzere, kaynaklara bağlantı konusunda anlaşma sağlamanın tüm yönlerini ele alır. Çağıran XmlResolver nesne, akışı yorumlama görevine sahiptir.
Ad alanı System.Xml, XmlResolver sınıfının iki somut uygulamasını içerir:
XmlUrlResolver , ad alanı içindeki System.Xml tüm sınıflar için varsayılan çözümleyicidir.
file://
vehttp://
protokollerini ve System.Net.WebRequest sınıfından gelen istekleri destekler. Performansı geliştirmek için sınıfı genişletme örnekleri için başvuru sayfasına bakın XmlUrlResolver .XmlSecureResolver nesneyi sarmalayarak ve erişebileceği kaynakları kısıtlayarak başka bir XmlResolver nesnenin güvenliğini sağlar. Örneğin, XmlSecureResolver belirli İnternet sitelerine veya bölgelerine erişimi yasaklayabilir.
Kendi çözümleyicinizi oluşturabilir ve belirtebilirsiniz. Çözümleyici belirtmezseniz, okuyucu kullanıcı kimlik bilgileri olmadan varsayılanı XmlUrlResolver kullanır.
XmlResolver kullanacağınızı, XmlReaderSettings.XmlResolver özelliğini ayarlayarak ve XmlReaderSettings nesnesini Create yöntemine geçirerek belirtirsiniz.
Kaynak kimlik doğrulaması gerektiren bir sistemde depolanıyorsa, gerekli kimlik bilgilerini belirtmek için özelliğini kullanırsınız XmlResolver.Credentials .
Kimlik doğrulama bilgilerini sağlama
Okunacak XML verilerini içeren dosyanın kısıtlı erişim ilkesi olabilir. Bir ağ kaynağına erişmek için kimlik doğrulaması gerekiyorsa, gerekli kimlik bilgilerini belirtmek için özelliğini kullanın Credentials .
Credentials Özellik ayarlanmadıysa, kimlik bilgileri olarak null
ayarlanır.
Örneğin, kimlik doğrulaması amacıyla web'den veri isteğinde bulunurken kimlik bilgilerinin gerekli olduğunu varsayalım. Web sanal dizini anonim erişime izin vermediği sürece, özelliğini kimlik bilgilerini sağlayacak şekilde ayarlamanız Credentials gerekir. Aşağıdaki örnek, varsayılan kimlik bilgilerini kullanarak XmlReader sitesine erişen bir XmlUrlResolver nesnesi oluşturur.
// Create a resolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;
// Set the reader settings object to use the resolver.
settings.XmlResolver = resolver;
// Create the XmlReader object.
XmlReader reader = XmlReader.Create("http://ServerName/data/books.xml", settings);
' Create a resolver with default credentials.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials
' Set the reader settings object to use the resolver.
settings.XmlResolver = resolver
' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("http://ServerName/data/books.xml", settings)
Farklı URI'ler için farklı kimlik bilgileri sağlayabilir ve bunları önbelleğe ekleyebilirsiniz. Bu kimlik bilgileri, XML'nin özgün kaynağından bağımsız olarak farklı URI'ler için kimlik doğrulamasını denetlemek için kullanılır. Aşağıdaki örnekte önbelleğe kimlik bilgilerinin nasıl ekleneceği gösterilmektedir.
// Create the credentials.
NetworkCredential myCred = new NetworkCredential(UserName,SecurelyStoredPassword,Domain);
CredentialCache myCache = new CredentialCache();
myCache.Add(new Uri("http://www.contoso.com/"), "Basic", myCred);
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred);
// Set the credentials on the XmlUrlResolver object.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = myCache;
// Compile the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("http://serverName/data/xsl/order.xsl",XsltSettings.Default, resolver);
' Create the credentials.
Dim myCred As NetworkCredential = New NetworkCredential(UserName,SecurelyStoredPassword,Domain)
Dim myCache As CredentialCache = New CredentialCache()
myCache.Add(new Uri("http://www.contoso.com/"), "Basic", myCred)
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred)
' Set the credentials on the XmlUrlResolver object.
Dim resolver As XmlUrlResolver = New XmlUrlResolver()
resolver.Credentials = myCache
' Compile the style sheet.
Dim xslt As XslCompiledTransform = New XslCompiledTransform()
xslt.Load("http://serverName/data/xsl/order.xsl", XsltSettings.Default, resolver)
Güvenlikle ilgili dikkat edilmesi gerekenler
sınıfıyla XmlResolver çalışırken aşağıdaki öğeleri göz önünde bulundurun.
XmlResolver nesneleri, kullanıcı kimlik bilgileri gibi hassas bilgiler içerebilir. XmlResolver nesneleri önbelleğe alırken dikkatli olmalı ve XmlResolver nesneyi güvenilmeyen bir bileşene geçirmemelisiniz.
sınıfını kullanan XmlResolver bir sınıf özelliği tasarlarsanız, özelliği salt yazma özelliği olarak tanımlanmalıdır. Özellik, kullanılacak XmlResolver öğesini belirtmek için kullanılabilir, ancak XmlResolver nesnesini döndürmek için kullanılamaz.
Uygulamanız güvenilmeyen koddan gelen XmlResolver nesnelerini kabul ediyorsa, yöntem GetEntity ile geçirilen URI'nin, yöntem ResolveUri ile döndürülenle aynı olacağını varsayamazsınız. sınıfından XmlResolver türetilen sınıflar yöntemini geçersiz kılabilir GetEntity ve özgün URI'de bulunandan farklı veriler döndürebilir.
Uygulamanız, okunan bayt sayısını sınırlayan bir GetEntity uygulayarak yönteme IStream yönelik hizmet tehditlerinin bellek reddini azaltabilir. Bu, kötü niyetli kodun GetEntity yöntemine sonsuz sayıda bayt akışı göndermeye çalıştığı durumlara karşı korunmaya yardımcı olur.