即使提出这个问题,我觉得有点蠢, 但我坐了一个小时试图弄清楚如何解决问题。 我目前正在制作一个使用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中。 所以我的问题是还有其他方法来指定路径,或者在我的情况下如何以正确的方式指定路径?
提前谢谢。
答案 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");