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

Mit*_*aff 7 server-side-includes asp-classic iis-7.5

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

我在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"-->
Run Code Online (Sandbox Code Playgroud)

包含失败,我得到500错误.

我也尝试过:

<!--#include file="/lib/my_include_file.asp"--> 
Run Code Online (Sandbox Code Playgroud)

结果相同.与:相同:

<!--#include file="/DCN/lib/my_include_file.asp"-->
Run Code Online (Sandbox Code Playgroud)

我将斜杠更改为反斜杠,结果相同.我甚至尝试过:

 <!--#include file="c:\inetpub\wwwroot\dcn\lib\my_include_file.asp"-->
Run Code Online (Sandbox Code Playgroud)

(出于纯粹的解散),但我仍然得到相同的结果.

如果我在dcn\trouble文件夹中创建一个子文件夹,我可以包含它的文件,但很明显,这并不理想.

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

Kev*_*Kev 7

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

根据您提出的包含文件所在的问题,请/DCN/lib执行以下操作:

<!-- #include virtual="/DCN/lib/my_include_file.asp -->
Run Code Online (Sandbox Code Playgroud)

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

使用路径类型时File="...",filename必须位于包含#include的文件夹的相对路径上.例如:

该指令<!-- #include file="my_include.asp" -->将包含my_include.asp在同一文件夹中.

该指令<!-- #include file="lib/my_include.asp" -->将包含运行脚本的当前文件my_include.asplib下面的文件夹.

该指令<!-- #include file="../my_include.asp" -->将包括my_include.asp从文件夹lib,其中脚本运行当前文件夹(父文件夹)的上方.

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

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

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


Yot*_*ots 5

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

您有两种选择:

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

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

  • `<! - #include file ="/ lib/my_include_file.asp" - >`即使禁用父路径也应该工作 (3认同)
  • @eduardo - 它不会,他需要使用`<! - #include virtual ="..." - >`而不是.`<! - #include file ="..." - >`仅支持相对路径. (2认同)