Charger le fichier XML dans le Contrôleur MVC
Je suis en train de charger un document XML en MVC dans le "HomeController"
Je veux ce document à charger dans tout sous le répertoire /Home/ont donc ma classe:
public HomeController()
{ }
Et à l'intérieur j'ai le code que je veux me connecter à l'XML avec:
//Now set up the config xml read
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(HttpContext.Server.MapPath("~/Content/settings.xml"));
XmlNodeList settings = xmldoc.SelectNodes("/settings");
XmlNodeList defaults = xmldoc.GetElementsByTagName("default");
foreach (XmlNode node in defaults)
{
string def_WebPageName = node["WebPageName "].InnerText;
}
Structure du XML:
<settings>
<defaults>
<WebPageName>blah</WebPageName>
</defaults>
Je n'arrive pas à le localiser theXML fichier, reçois un "ensemble de l'Objet de référence null" erreur
- Quelle est la cause de la valeur null réf exception? Si xmldoc.La charge n'arrivais pas à trouver le fichier que vous voulez obtenir une sorte de IO exception non null réf.
- peut-être que le Chemin n'est pas correct. xmldoc.Charge(HttpContext.Serveur.MapPath("~/Content/settings.xml"));
- Détails De L'Exception: System.NullReferenceException: la référence d'Objet n'est pas définie à une instance d'un objet. Source de l'Erreur: Ligne 29: //Maintenant mis en place la configuration xml lire en Ligne 30: XmlDocument xmldoc = new XmlDocument(); Ligne 31: xmldoc.La Charge Du Serveur.MapPath("~/Content/settings.xml"));
- l'utilisation du débogueur, essayer de trouver ce qui est null. Si nécessaire, refactoriser le code pour utiliser une variable comme ceci :
var filePath = HttpContext.Server.MapPath("~/Content/settings.xml"); xmldoc.Load(filePath);
afin de vérifier si le fichier est trouvé, également, la ligne le 29 ? - Pour une raison quelconque, httpContext est nulle lorsque je l'inspecter. ligne 29 est juste un commentaire. "//Maintenant mis en place la configuration xml lire"
Vous devez vous connecter pour publier un commentaire.
Si c'est une application Web, vous obtenez quelque chose comme http://yoursite/Content/settings.xml. Vérifier si ce chemin d'accès au fichier existe sur le serveur web. Si c'est une application WinForms utilisation ExecutionPath ou des variables d'Environnement pour obtenir le chemin d'accès dont vous avez besoin.
Vous devez également utiliser quelque chose comme
if(File.Exists(yourFilePathHere))
Au lieu de
essayer avec seulement