2009-04-11 8 views
1

Ich fühle mich ein bisschen dumm, um diese Frage zu stellen, Aber ich saß wie eine Stunde versucht, herauszufinden, wie das Problem zu lösen. Ich mache derzeit ein Projekt, das ASP.NET und XML verwendet, für mein Projekt habe ich eine neue Website aus Visual Studio erstellt und versucht, meine XML-Dateien in App_Data zu behalten.kann nicht finden xml path error

Allerdings, wenn ich versuche, den Code zu verwenden:

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") 
        }; 

Ich erhalte eine Fehlermeldung:

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 

Ich bin absolut sicher, dass meine Datei in App_Data. Also meine Frage gibt es andere Möglichkeit, Pfad anzugeben, oder wie wäre es in meinem Fall richtige Weise, den Pfad anzugeben?

Vielen Dank im Voraus.

Antwort

3

Verwenden Request.ApplicationPath

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

Dadurch wird sichergestellt, dass Ihr Versuch, die Datei an der richtigen Stelle zu laden, wird standardmäßig der Prozess in „c ausgeführt wird: \ Programme \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ "(der Debug-Webserver), auf einem Produktionsserver wäre der Pfad höchstwahrscheinlich in C: \ windows \ system32 \ oder überall dort, wo sich der IIS-Prozess befindet.

Machen Sie Ihre Pfade immer absolut, wenn Sie mit Dateien in ASP.NET arbeiten.

Sie können auch System.IO.Path.Combine (Request.ApplicationPath, "App_Data/topics.xml") verwenden, um sicherzustellen, dass Ihre String-Konkordie "korrekt" ist.

3

Da könnte es für jemand anderen nützlich sein. Eine andere Lösung, die ich fand

String xmlpath = Server.MapPath("App_Data/topics.xml"); 
Verwandte Themen