我看到了一个类似的问题,但我的略有不同:
我在 IIS 7.5 服务器 (R2008 V2) 上使用 #include 文件时得到间歇性结果。我的包含仅当它们与当前 .asp 页面位于同一文件夹中或位于当前页面的子文件夹中时才有效。这很不方便,因为我想将它们全部保存在主页面之外的/lib 子文件夹中。
我的配置:我有一个名为 DCN 的文件夹,位于 wwwroot 文件夹的正下方。 DCN文件夹下的/lib文件夹中有几个文件,所以绝对路径是c:\inetpub\wwwroot\dcn\lib\my_include_file.asp。如果我在 DCN 文件夹中打开一个 ASP 页面,我可以从/lib 子文件夹中提取包含文件。但是,如果我从 DCN/trouble 文件夹(例如“DCN\Trouble\Search.asp”)打开一个 ASP 页面,并且 search.asp 页面中有一行表示:
<!--#include file="../lib/my_include_file.asp"-->
包含失败,我收到 500 错误。
我也试过:
<!--#include file="/lib/my_include_file.asp"-->
结果相同。同:
<!--#include file="/DCN/lib/my_include_file.asp"-->
我将斜杠改为反斜杠,结果相同。我什至尝试:
<!--#include file="c:\inetpub\wwwroot\dcn\lib\my_include_file.asp"-->
(出于纯粹的绝望),但我仍然得到相同的结果。
如果我在 dcn\trouble 文件夹中创建一个子文件夹,我可以包含其中的文件,但显然,这并不理想。
任何建议将不胜感激。我不禁认为这是微不足道的事情。提前致谢!
最佳答案
Yots 是正确的,听起来父路径已关闭。如果您无法打开这些,请改用虚拟路径:
根据您声明包含文件在 /DCN/lib
中的问题然后执行以下操作:
<!-- #include virtual="/DCN/lib/my_include_file.asp -->
使用虚拟路径时,您必须指定文件的完整虚拟路径,即从站点的根目录。如果您在使用 XP 的开发机器上的子文件夹中构建应用程序,然后部署到生产机器的根目录中,那么这并不理想。也就是说,Vista 或 Windows 7 上的 IIS7 现在允许创建多个站点 **。
使用
File="..."
的路径类型时, 文件名必须位于包含 #include 的文件夹的相对路径上。例如:指令
<!-- #include file="my_include.asp" -->
将包括 my_include.asp
来自同一个文件夹。指令
<!-- #include file="lib/my_include.asp" -->
将包括 my_include.asp
从文件夹 lib
在运行脚本的当前文件夹下方。指令
<!-- #include file="../my_include.asp" -->
将包括 my_include.asp
从文件夹 lib
在脚本运行的当前文件夹(父文件夹)上方。指令
<!-- #include file="../lib/my_include.asp" -->
将包括 my_include.asp
从文件夹 lib
这是父文件夹(或当前文件夹的兄弟文件夹)的子文件夹。如果未启用父路径,则最后两个示例将不起作用。
** 我知道有一些技巧可以在 XP 的 IIS5.1 中启用多个 IIS 站点。
关于asp-classic - 为什么#include 不能在 IIS7.5 中的 .asp 页面上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3937632/