找不到xml路径错误

时间:2009-04-11 17:24:25

标签: c# .net asp.net xml linq

即使提出这个问题,我觉得有点蠢, 但我坐了一个小时试图弄清楚如何解决问题。 我目前正在制作一个使用ASP.NET和XML的项目,对于我的项目,我从Visual Studio创建了新的网站,并尝试将我的XML文件保存在App_Data中。

然而,当我尝试使用代码时:

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中。 所以我的问题是还有其他方法来指定路径,或者在我的情况下如何以正确的方式指定路径?

提前谢谢。

2 个答案:

答案 0 :(得分:3)

使用Request.ApplicationPath

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

这将确保您尝试将文件加载到正确的位置,默认情况下,该进程在“c:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \”(调试Web服务器)中运行,生产服务器,路径最有可能位于C:\ windows \ system32 \或IIS进程所在的位置。

在ASP.NET中使用文件时,始终使路径绝对。

您还可以使用System.IO.Path.Combine(Request.ApplicationPath,“App_Data / topics.xml”)来确保字符串连接“正确”。

答案 1 :(得分:3)

因为它可能对其他人有用。 我找到的另一个解决方案

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