从相对路径加载文件

load file from relative path

我目前正在这样做:

XDocument feedXml = XDocument.Load("C:/NewsFeed/NewsFeed/App_Data/WorldNews.xml");

但是我想使用相对路径,所以我尝试了以下方法:

XDocument feedXml = XDocument.Load("~/App_Data/WorldNews.xml");

并将 属性 复制到输出目录设置为 "Copy Always"。

但我收到以下错误:

'System.IO.DirectoryNotFoundException' 类型的异常发生在 mscorlib.dll 但未在用户代码中处理 附加信息:未找到部分路径 'C:\Program Files (x86)\IIS Express\~\App_Data\WorldNews.xml'。

有什么帮助吗?

XDocument.Load 对映射路径一无所知。相反,您应该使用 HttpServerUtility.MapPath 映射路径,然后将结果传递给 XDocument.Load:

var path = HttpContext.Current.Server.MapPath("~/App_Data/WorldNews.xml");
var feedXml = XDocument.Load(path);