如何验证启动时是否存在所有必需的包含文件

How to verify that all required included files exist on startup

是否有人仍在使用经典 ASP VBScript 并且知道是否可以在启动时验证所有包含的文件是否存在?这是一个大型项目,需要进行一些重构,但在将文件移动到子文件夹之前,我想进行一些测试以确保所有包含仍指向正确的文件。

我从未尝试过,原因如下

在经典 ASP 中,您可以有两种类型的 #include SSI 指令;

  1. 相对路径包括,它们从当前目录开始的路径。

    <!-- #include file = "subfolder/file.asp" -->
    
  2. 虚拟路径包含,它们从包含的 Web 应用程序的根目录获取它们的路径。

    <!-- #include virtual = "/toplevelfolder/subfolder/file.asp" -->
    

如果您在 Web 应用程序中设置了 Enable Parent Paths,您还可以在使用 #include file 时使用 ../ 遍历父文件夹。

考虑到所有这些,想一想您需要做什么。

首先,您需要确定所有 #include 指令,您可能会使用循环遍历 Web 应用程序并找到 .asp 文件,例如,然后使用正则表达式来执行这些指令拉出路径。但是也有并发症。

  1. 您必须区分 filevirtual 类型的 #include
  2. 想出一种方法来翻译两种类型的路径,可能使用 GetAbsolutePathName() 并验证文件是否存在。
  3. virtual includes 还可以指向仅存在于 IIS 中的虚拟目录,并指向另一个物理位置 (不必位于 Web 应用程序的文件夹结构内) 。老实说,这可能是最大的并发症。