前面一些文章谈了关于 Server.Execute 调用 或 #include 包含时的路径问题,这里来个总结。为便于叙述,我们把“Server.Execute 调用”简称“调用”,把“#include 包含”简称“包含”。
- 有 A.asp、B.asp、C.asp 三个文件,目录结构如下:
- /A.asp
- /B/B.asp
- /B/C/C.asp
- A.asp 调用或包含 B.asp
- B.asp 调用或包含 C.asp
- C.asp 中有一句代码 Server.MapPath("D.asp")
有两个问题:
- 在调用或包含时,B.asp 用什么样的相对路径去调用或包含 C.asp?
- D.asp 最终计算出来与哪个文件同目录?
结果是这样的:
- 只要 B.asp 是调用 C.asp,路径就是 B/C/C.asp,不论 A.asp 对 B.asp 是调用还是包含。
- 只要 B.asp 是包含 C.asp,路径就是 C/C.asp,不论 A.asp 对 B.asp 是调用还是包含。
- 不论 A.asp、B.asp、C.asp 之间调用还是包含关系,计算出来的 D.asp 路径最终都与 A.asp 同目录。