2010-10-14 58 views
7

我看到一個類似的問題,但我的略有不同:爲什麼不在IIS7.5中的.asp頁面上工作#include?

我得到間歇性的結果與工作在IIS 7.5服務器(R2008 V2)的#include文件。我的包含只在與當前.asp頁面位於同一文件夾或當前頁面的子文件夾中才有效。這很不方便,因爲我想將它們全部保存在主頁面的/ lib子文件夾中。

我的配置:我有一個名爲DCN的文件夾,坐在wwwroot文件夾的正下方。 DCN文件夾中的/ lib文件夾中有多個文件,因此絕對路徑爲c:\ inetpub \ wwwroot \ dcn \ lib \ my_include_file.asp。如果我在DCN文件夾中打開ASP頁面,我可以從/ lib子文件夾中提取包含文件。不過,如果我打開一個ASP頁從DCN /故障文件夾(如「DCN \麻煩\ 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文件夾中創建一個子文件夾,我可以包含它的文件,但很明顯,這並不理想。

任何建議將不勝感激。我忍不住想這是件小事。提前致謝!

+0

您是否在lib文件夾中存儲ACL? – 2010-10-15 10:48:59

回答

5

我認爲你的問題是在IIS中默認禁用父路徑。

你有兩個選擇:

  1. 使用虛擬路徑
  2. 在IIS

啓用ASP父路徑有關詳情請閱讀這篇文章從IIS網站
http://learn.iis.net/page.aspx/566/classic-asp-parent-paths-are-disabled-by-default/

+3

'<! - #include file =「/ lib/my_include_file.asp」 - >'即使父路徑被禁用也應該工作 – 2010-10-15 10:46:10

+2

@eduardo - 不會,他需要使用'<! #include virtual =「...」 - >'代替。 '<! - #include file =「...」 - >'只支持相對路徑。 – Kev 2010-10-15 13:39:01

+1

就是這樣。非常感謝你的幫助! – 2010-10-15 19:09:38

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" -->將包含文件夾lib下的my_include.asp,該文件夾位於運行腳本的當前文件夾下。

指令<!-- #include file="../my_include.asp" -->將包含文件lib上的文件my_include.asp,該文件夾位於運行腳本的當前文件夾(父文件夾)的上方。

指令<!-- #include file="../lib/my_include.asp" -->將包含文件夾lib中的my_include.asp,該文件夾是父文件夾(或當前文件夾的兄弟文件)的子文件夾。

如果父路徑未啓用,最後兩個示例將不起作用。

** 我知道有一些黑客可以在XP的IIS5.1中啓用多個IIS站點。

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位置有個mysite。

相關問題