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文件夹中创建一个子文件夹,我可以包含它的文件,但很明显,这并不理想.
任何建议将不胜感激.我不禁想到这是微不足道的.提前致谢!
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.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站点.
我认为你的问题是在IIS中默认禁用父路径.
您有两种选择:
有关详细信息,请阅读IIS网站
http://learn.iis.net/page.aspx/566/classic-asp-parent-paths-are-disabled-by-default/
| 归档时间: |
|
| 查看次数: |
17560 次 |
| 最近记录: |