2009-12-21 11 views
1

Cela me dérange depuis quelques jours. Je suis en train de charger un XML à partir d'un fichier téléchargé dans un objet XmlDocument et obtenir l'écran jaune de mort suivant:Problème de validation de XML contre DTD en C#

Voici mon code. Vous pouvez voir clairement que je mets ProhibitDtd à false.

public static XmlDocument LoadXml(FileUpload fu) 
{ 
    var settings = new XmlReaderSettings 
         { 
          ProhibitDtd = false, 
          ValidationType = ValidationType.DTD 
         }; 
    var sDtdPath = string.Format(@"{0}", HttpContext.Current.Server.MapPath("/includes/dtds/2.3/archivearticle.dtd")); 
    settings.Schemas.Add(null, sDtdPath); 

    var r = XmlReader.Create(new StreamReader(fu.PostedFile.InputStream), settings); 
    var document = new XmlDocument(); 
    document.Load(r); 
    return document; 
} 

Répondre

2

Ajouter à votre XmlResolver=nullXmlReaderSettings. Cela empêchera xmlDocument d'essayer d'accéder à la DTD. Si vous devez valider, faites-le dans une opération séparée.