为什么#include不在IIS7.5中的.asp页面上工作?

时间:2010-10-14 21:13:05

标签: asp-classic iis-7.5 server-side-includes

我看到了类似的问题,但我的情况略有不同:

我在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文件夹打开一个ASP页面(例如“DCN \ Trouble \ Search.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文件夹中创建一个子文件夹,我可以包含它的文件,但很明显,这并不理想。

任何建议都将不胜感激。我不禁想到这是微不足道的。提前谢谢!

3 个答案:

答案 0 :(得分:7)

Yots是正确的,听起来父路径已关闭。如果您无法启用这些,请改为使用虚拟路径:

根据您的问题,您说明包含文件位于/DCN/lib,然后执行以下操作:

<!-- #include virtual="/DCN/lib/my_include_file.asp -->

使用虚拟路径时,您必须指定文件的完整虚拟路径,即从站点的根目录。如果您正在开发机器上的子文件夹中构建应用程序,而您正在使用XP然后部署到生产计算机的根目录中,那么这并不理想。这就是说Vista或Windows 7上的IIS7允许现在创建多个站点**。

使用路径类型File="..."时, filename 必须位于包含#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的{​​{1}},该文件夹是父文件夹(或当前文件夹的兄弟)的子文件。

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

** 我知道在XP的IIS5.1中启用多个IIS站点存在黑客攻击。

答案 1 :(得分:5)

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

您有两种选择:

  1. 使用虚拟路径
  2. 在IIS上启用ASP父路径
  3. 有关详细信息,请从IIS网站上阅读本文 http://learn.iis.net/page.aspx/566/classic-asp-parent-paths-are-disabled-by-default/

答案 2 :(得分:3)

#include virtual怎么样?如果它是:

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

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

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