2009-04-11 3 views
1

를 찾을 수 없습니다. 현재 ASP.NET과 XML을 사용하는 프로젝트를 만들고 있습니다. 프로젝트의 경우 Visual Studio에서 새 웹 사이트를 만들고 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 "에서 실행되는 기본적으로 올바른 위치에있는 파일을로드하려고 시도하는 것을 보장합니다 : \ 프로그램 파일 \의 Microsoft Visual Studio 9.0 \ Common7 \ IDE \ "(디버그 웹 서버)의 경우 프로덕션 서버에서 경로는 C : \ windows \ system32 \ 또는 IIS 프로세스가있는 위치에있을 가능성이 큽니다.

ASP.NET에서 파일을 작업 할 때 항상 절대 경로를 지정하십시오.

당신은 또한 당신의 문자열 CONCAT을 보장하기 위해 System.IO.Path.Combine (Request.ApplicationPath, "App_Data/topics.xml")를 사용할 수있는 것은 '올바른'입니다.

3

다른 사람에게 유용 할 수 있으므로 내가

String xmlpath = Server.MapPath("App_Data/topics.xml"); 
을 발견 또 다른 방법
관련 문제