7

我看到了一个与此类似的问题,但我的问题略有不同:

在 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 文件夹中创建一个子文件夹,我可以包含其中的文件,但显然,这并不理想。

任何建议将不胜感激。我不禁认为这是微不足道的事情。提前致谢!

4

3 回答 3

7

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.asplib

该指令<!-- #include file="../lib/my_include.asp" -->将包括my_include.asp来自作为lib父文件夹(或当前文件夹的兄弟)子文件夹的文件夹。

如果未启用父路径,最后两个示例将不起作用。

**我知道有一些黑客可以在 XP 的 IIS5.1 中启用多个 IIS 站点。

于 2010-10-15T13:37:39.020 回答
5

我认为您的问题是在 IIS 中默认禁用父路径。

你有两个选择:

  1. 使用虚拟路径
  2. 在 IIS 上启用 ASP 父路径

有关详细信息,请阅读 IIS 网站http://learn.iis.net/page.aspx/566/classic-asp-parent-paths-are-disabled-by-default/上的这篇文章

于 2010-10-15T08:32:43.427 回答
4

一个#include virtual呢?如果它显示:

#include virtual="\mysite\include\file.inc

它应该file.inc在 mysite 下的 include 文件夹中找到?我已经启用和禁用了父路径并尝试了大约一百万件事。我仍然收到asp 0126 error未找到文件的通知。我可以将其切换为包含文件,然后它会找到它,但是 file.inc 有一堆其他包含,然后无论我如何将其更改为包含文件或虚拟文件,它都无法找到它们。它适用于 IIS 6,但不适用于我将此站点移至的 IIS 7。这是一个经典的 asp 页面,大部分内容都在包含文件中完成

我在该Default Web site\dept_Sites\mysite位置有mysite。

于 2011-08-30T16:58:08.230 回答