2009-04-11 9 views
1

私はちょっとその質問をするには愚かな感じ、 しかし、私は問題を解決する方法を理解しようとしているように座っていた。 私は現在、ASP.NETとXMLを使用するプロジェクトを作成しています。プロジェクトでは、Visual Studioから新しいWebサイトを作成し、App_DataにXMLファイルを保存しようとしています。私は、コードを使用しようとしたときxmlのパスエラーが見つかりません

しかし:

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

を私はエラーを取得しています:

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 

私はApp_Dataにで私のファイルその絶対に確信しています。 私の質問は、パスを指定する別の方法があるか、パスを指定する私の場合の適切な方法になる方法ですか?

ありがとうございます。

答えて

3

使用Request.ApplicationPath

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

このプロセスはC」で実行されているデフォルトでは、あなたは正しい場所にファイルをロードしようとしていることを確認します:\ Program Files \ MicrosoftビジュアルStudio 9.0 \ Common7 \ IDE \ "(デバッグWebサーバー)、実稼働サーバーでは、パスはC:\ windows \ system32 \またはIISプロセスの場所に関係します。

ASP.NETでファイルを操作する場合は、常に絶対パスを使用してください。

また、System.IO.Path.Combine(Request.ApplicationPath、 "App_Data/topics.xml")を使用して、文字列連結が「正しい」ことを確認することもできます。

3

他の人にとっては役に立ちそうなので、 私が見つけた別の解決策

String xmlpath = Server.MapPath("App_Data/topics.xml"); 
関連する問題