SSI 指令為用戶提供在 Web 服務器處理之前將一個文件的內容插入到另一個文件的方法。ASP 只使用這一機制的 #include 指令。要在 .ASP 文件中插入一個文件,使用下面的語法:
<!--#include virtual | file ="filename"-->
virtual 和 file 關鍵字指示用來包含該文件的路徑的類型,filename 是您想包含的文件的路徑和名稱。
被包含文件不要求專門的文件擴展名;但是,為被包含文件賦予 .inc 擴展名以便和其他類型文件相區分是一個良好的編程習慣。
使用 Virtual 關鍵字
使用 Virtual 關鍵字指出路徑開始於虛擬目錄。例如,如果一個被命名為 Footer.inc 的文件屬於一個名為 /Myapp 的虛擬目錄,則下面的一行將把 Footer.inc 的內容插入到包含該行的文件中:
<!--#include virtual ="/myapp/footer.inc"-->
使用 File 關鍵字
使用 file 關鍵字指示使用相對路徑。相對路徑開始於含有該包含文件的目錄。例如,如果您的文件位於目錄 Myapp 中,而文件 Header1.inc 在 Myapp\Headers 中,下面的一行將把 Header1.inc 插入到您的文件中:
<!--#include file ="headers/header1.inc"-->
注意,到被包含文件 Headers/header1.inc 的路徑是相對於包含文件的;如果包含 #include 語句的腳本不在 /Myapp 目錄中,那麼該語句將不起作用。
如果在 Internet 服務管理器中的“啟用上層目錄”選項被選中,則也可以使用 file 關鍵字和 ../ 語法包含父目錄即上一層目錄中的文件。
被包含文件的位置
被包含文件可以在您的 Web 站點內的某個目錄中,也可以在您的 Web 站點之外。通常,您應該使被包含文件位於 Web 站點的目錄中。如果一個被包含文件位於您的 Web 站點內,則當浏覽器下次請求包含文件時,將顯示對被包含文件的改變。但是,如果被包含文件位於您的 Web 站點之外,直到 ASP 應用程序重新啟動或 Web 服務器重新啟動時,這種改變才能體現出來。ASP 檢測在應用程序命名空間中(在應用程序的起始目錄下)的任何包含文件的改變。
包含文件:提示和警告
一個被包含文件也可以包含其他的文件。如果 #include 指令沒有導致循環,一個 .asp 文件可以多次包括同一個文件。例如,如果文件 First.asp 包含文件 Second.inc,則 Second.inc 一定不能再包含 First.asp。一個文件也不能包含自身。ASP 檢測此類循環或嵌套錯誤,並在檢測到時產生一個錯誤消息,同時停止處理被請求的 .ASP 文件。
ASP 在執行腳本命令之前包含文件。因此,不能用腳本命令去創建被包含文件的名稱。例如,下面的腳本將不能打開 Header1.inc,因為 ASP 會在它分配一個文件名給變量 name 之前先執行 #include 指令。
<!-- This script will fail -->
<% name=(header1 & ".inc") %>
<!--#include file="<%= name %>"-->
腳本命令和過程必須完全包含在腳本定界符 <% 和 %> 、HTML 標記 <SCRIPT> 和 </SCRIPT> 或 Html 標記 <OBJECT> 和 </OBJECT> 中。也就是說,不能在一個 .ASP 包含文件中打開一個腳本定界符,然後在一個被包含的文件中才關閉該定界符;腳本或腳本命令必須是一個完整的單元。例如,下面的腳本將無法運行:
<!-- This script will fail -->
<%
For i = 1 To n
statements in main file
<!--#include file="header1.inc" -->
Next
%>
下面的腳本將正常運行:
<%
For i = 1 to n
statements in main file
%>
<!--#include file="header1.inc" -->
<% Next %>