Server-Side Includes | |
Similar to preprocessing directives, Server-Side Includes allow you to include various values (for instance, the last modified date of a file) or a complete file in your script. The following are the Server-Side Include directives supported by IIS:
All directives are allowed in HTML. Only the #include directive, however, is allowed in both HTML and ASP pages. The #include directive is the only one detailed here. |
Server-Side Includes: Comments/Troubleshooting | |
Including files is an excellent
method for writing reusable code. We use it often for code we use in
almost every script, such as establishing a connection to a database
or closing the connection once your code has no more need of it. Your
Server-Side Include files need not end with any specific file
extension, but Microsoft suggests the
|
#include | |||||||
<!-- #include PathType = "strFileName" --> | |||||||
<!-- #include PathType = "strFileName" --> The #include Server-Side Include allows you to insert the contents of a given file into the HTML content or ASP script. You must surround the #include Server-Side Include statement in an HMTL comment. Otherwise, the text of the Server-Side Include will be displayed as straight text. |
|||||||
Parameters | |||||||
Introduced with IIS 5.0, there is a second way to include a file. You can use the <SCRIPT> tag combined with the SRC attrribute using the following format: <SCRIPT LANGUAGE = "VBScript" RUNAT=SERVER SRC="strFileName"> </SCRIPT> In the preceding code, the strFileName parameter is the same as that used with the INCLUDE directive and can be an absolute or relative path. |
|||||||
Example 1 | |||||||
The following script contains only a simple "back to top" line of code and a horizontal line with a graphic. <!--ReturnTop.INC --> <CENTER> <HR> Click <A HREF = #top>here</A> to go back to the top of the page.<BR> <IMG SRC = "/Images/CorpLogo.GIF"></CENTER><BR> We could now include this file anywhere we needed a return to the top of a page: <HTML> <HEAD><TITLE>Include Example</TITLE></HEAD> <BODY> <% [CODE TO RETRIEVE GLOSSARY TERMS FROM SQL SERVER DATABASE] ' Filter the recordset to include only the A's. adoRecGlossary.Filter = "UPPER(SUBSTRING(GlossTerm, 1)) = 'A'" ' Iterate through the items in the filtered recordset. Do While Not adoRecGlossary.EOF %> Term: <%=adoRecGlossary("GlossTerm")%><BR> Definition: <%=adoRecGlossary("GlossDef")%><BR> <% adoRecGlossary.MoveNext Loop ' Next include the link to top file: %> <!-- #include virtual = "/Includes/ReturnTop.INC" --> <% ' Repeat for the next letter... %> </BODY> </HTML> |
|||||||
Example 2 | |||||||
The following script contains ASP code that will be included in a file using the <SCRIPT> tag combined with the SRC method: ' ReturnTop2.INC Response.Write "<CENTER>" Response.Write "<HR>" Response.Write "Click <A HREF = #top>here</A> to go back to the top of the page.<BR>" Response.Write "<IMG SRC = "/Images/CorpLogo.GIF"></CENTER><BR>" We could now include this file anywhere we needed a return to the top of a page: <HTML> <HEAD> <TITLE>Include Example 2</TITLE> </HEAD> This page will now include a file...<BR> <SCRIPT LANGUAGE="VBScript" RUNAT="SERVER" SRC="ReturnTop2.INC"> </SCRIPT> . . . |
|||||||
Notes | |||||||
Using the INCLUDE directive, you can include files containing HTML or ASP code or a combination of the two. Using the SCRIPT tag method to include a file (as in the preceding example) the file you include must contain only ASP code. The examples demonstrate how using include files can reduce the amount of redundant work you are required to do, but these examples are very simple. Suppose, as another example, that you have an include file containing the DSN of your database, the username, and the password. You could use that include file all over your site. It would then be a very simple matter to change username and password: you'd just change it in the include file. If you use the #include Server-Side Include to incorporate the contents of an ASP, you must use the <%...%> pair around any script. Otherwise, the contents of the file are treated as regular HTML code. One use for this Server-Side Include is to localize the portions of your script that are used often, such as database access information. This also allows you to change usernames and passwords quickly and efficiently. If you choose to use the #include Server-Side Include in this manner, ensure that whatever file you include is secured properly. You can include files within files that are, in turn, included in other files. You can also include the contents of a given file multiple times in the same script. One example of this is in a simple error-handling script. For example, consider the following file: <% If Err.Number <> 0 Then %> <HTML> <HEAD><TITLE>Error Notice</TITLE></HEAD> <BODY> There has been an error in your script (<%=Request. ServerVariables("SCRIPT_NAME")%>.<BR> Please contact customer service at 1-800-555-HELP and tell them that you've experienced an error in (<%=Request. ServerVariables("SCRIPT_NAME")%> and that the parameters sent to the script were the following:<BR> (<%=Request.ServerVariables("QUERY_STRING")%>.<BR><BR> We apologize for the inconvenience. </BODY> </HTML> <% End If %> This file (named <%Response.Buffer = True%> <HTML> <HEAD><TITLE>Database Info Page</TITLE></HEAD> <BODY> <% Set adoCon = Server.CreateObject("ADODB.Connection") AdoCon.Open "MyDatabase" %> <!-- #include virtual = "/Accessory/ERROR.INC" --> <% Set adoRec = adoCon.Execute ("SELECT * FROM TopSales") %> <!-- #include virtual = "/Accessory/ERROR.INC" --> <% %> </BODY> In this script, if an error is raised when opening the database
connection or when creating the recordset, the user will see the
contents of the When you include a file, make sure that the included file does not include the current file. This will result in a service-stopping error on the web server, requiring that you stop and restart the web service. You must also remember that Server-Side Includes are processed before any script code. For this reason, you cannot dynamically determine which file to include. For example, the following script will result in a runtime error: <% Dim strFileName strFileName = "/Apps/CustomConstants.INC" %> <!-- #include file="<%=strFileName%>"--> Finally, Server-Side Includes must be placed outside script delimiters (<%...%>), <SCRIPT></SCRIPT> tags, and <OBJECT></OBJECT> tags. For example, the following code will result in a runtime error (there is no closing %> delimiter): <% Dim strLastName strLastName = "Weissinger" <!-- #include file="/Apps/CustomConstants.INC"--> The following code will also fail: <SCRIPT LANGUAGE="VBScript"> Sub btnHello_Click( ) Dim strLastName strLastName = "Weissinger" <!-- #include file="/Apps/CustomConstants.INC"--> End Sub </SCRIPT> This is the only Server-Side Include that you can use in both HTML
and ASP files. If you use the #include Server-Side
Include in a file, that file's extension must be one of those
mapped to |
|||||||