2009-04-11 6 views
1

Je me sens un peu stupide de même poser cette question, Mais j'étais assis comme une heure en essayant de comprendre comment résoudre le problème. Je suis actuellement en train de faire un projet qui utilise ASP.NET et XML, pour mon projet j'ai créé un nouveau site web à partir de Visual Studio, et en essayant de garder mes fichiers XML dans App_Data.ne peut pas trouver l'erreur de chemin xml

Cependant quand je tente d'utiliser le code:

var topic = from t in XElement.Load("App_Data/topics.xml").Elements("topics") 
        select new 
        { 
         topic_id = t.Attribute("id"), 
         topic_subject = t.Element("topicname"), 
         topic_short_body = t.Element("topicshortbody") 
        }; 

Je reçois une erreur:

Exception Details: System.IO.DirectoryNotFoundException: Could not find a part of the path 'c:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\App_Data\topics.xml'. 

Source Error: 

Line 23:  { 
Line 24: 
Line 25:   var topic = from t in XElement.Load("App_Data/topics.xml").Elements("topics") 
Line 26:      select new 
Line 27:      { 


Source File: d:\college\xml\xmlproject\Default.aspx.cs Line: 25 

Je suis absolument sûr que mon dossier dans App_Data. Donc, ma question est là autre façon de spécifier le chemin, ou comment ce serait dans mon cas la bonne façon de spécifier le chemin?

Merci à l'avance.

Répondre

3

Utilisez Request.ApplicationPath

XElement.Load(Request.ApplicationPath + "/App_Data/topics.xml"); 

Cela permettra d'assurer que votre tentative de charger le fichier à l'emplacement correct, par défaut, le processus est en cours d'exécution dans « c: \ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ "(le serveur web de débogage), sur un serveur de production, le chemin serait probablement dans C: \ windows \ system32 \ ou là où se trouve le processus IIS.

Toujours rendre vos chemins absolus lorsque vous travaillez avec des fichiers dans ASP.NET.

Vous pouvez également utiliser System.IO.Path.Combine (Request.ApplicationPath, "App_Data/topics.xml") pour vous assurer que votre concat est "correcte".

3

Puisqu'il pourrait être utile à quelqu'un d'autre. Une autre solution que j'ai trouvée

String xmlpath = Server.MapPath("App_Data/topics.xml"); 
Questions connexes