成为ASP.NET的新手我不确定我的问题的最佳解决方案。我有一行代码如:
xDoc.Load("Templates/template1.cfg");
xDoc是XmlDocument
。在我的项目中,在顶层有一个名为Templates的目录。当我在调试模式下运行项目时,我得到一个DirectoryNotFoundException
,显然它正在C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\Templates
中寻找模板目录。
如何在没有硬编码的情况下正确指向该目录?
答案 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");
代字号表示应用程序的基本目录。