ASP.NET应用程序代码中的相对路径

时间:2012-03-07 14:16:14

标签: c# asp.net .net

成为ASP.NET的新手我不确定我的问题的最佳解决方案。我有一行代码如:

xDoc.Load("Templates/template1.cfg");

xDoc是XmlDocument。在我的项目中,在顶层有一个名为Templates的目录。当我在调试模式下运行项目时,我得到一个DirectoryNotFoundException,显然它正在C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\Templates中寻找模板目录。

如何在没有硬编码的情况下正确指向该目录?

5 个答案:

答案 0 :(得分:17)

Server.MapPath - 返回相对路径的路径; ~确保相对路径与应用程序根

相关
xDoc.Load(Server.MapPath("~/Templates/template.cfg"));

答案 1 :(得分:8)

我可能会用

xDoc.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Templates/Template.cfg"));

这使您的XML加载代码独立于ASP.NET。如果您要在Windows窗体应用程序中重复使用它,这将提供相对于包含Windows Forms可执行文件的目录的路径。

答案 2 :(得分:3)

xDoc.Load("~/Templates/template.cfg");

可能有用吗?

答案 3 :(得分:3)

尝试:

xDoc.Load(Server.MapPath("~/Templates/template1.cfg"));

答案 4 :(得分:1)

在路径中使用代字号“〜”。

xDoc.Load("~/Templates/template1.cfg");

代字号表示应用程序的基本目录。