Vorverarbeitungsdirektiven  

Active Server Pages stellt Vorverarbeitungsdirektiven bereit, die den Kompilerdirektiven in C und ähnlichen Sprachen entsprechen. Wie diese Vorkompilierungsdirektiven weisen die ASP-Direktiven den Webserver an, eine Funktion auszuführen, bevor das Skript abgeschlossen und an den Client gesendet ist. Der Webserver führt die anderen Direktiven vor der Interpretation des eigentlichen Skripts aus. ASP-Direktiven (mit Ausnahme von <%= Ausdruck %>) müssen in der ersten Zeile eines Skripts aufgeführt werden und können nicht einbezogen werden, wenn eine Server-Side Included Datei verwendet wird. Das Format dieser Direktiven (mit oben genannter Ausnahme der Direktive <%= Ausdruck %>) ist wie folgt:

<%@ DIRECTIVE=Value%>

wobei DIRECTIVE eine der in diesem Bereich aufgeführten ASP-Direktiven ist und Value für einen gültigen Wert für die Direktive steht. Beachten Sie, dass zwischen dem Zeichen @ und der Direktive ein Leerzeichen sein muss. Darüber hinaus muss die Vorverarbeitungsdirektive zwischen den Trennzeichen <%...%> platziert sein.

Die gültigen ASP-Vorverarbeitungsdirektiven sind im Folgenden aufgeführt und werden weiter unten im Kapitel genauer erläutert:

  • CODEPAGE
  • ENABLESESSIONSTATE
  • LANGUAGE
  • LCID
  • TRANSACTION
Vorverarbeitungsdirektiven: Anmerkungen/Fehlerbehebung  
 
 

Das Leerzeichen zwischen dem Zeichen @ und der Direktive sowie die Anforderung, dass Direktiven in der ersten Zeile eines Skripts aufgeführt werden müssen, sind die wichtigsten syntaktischen Merkmale einer ASP-Direktive. Die Nichtbeachtung dieser beiden Vorgaben sind die häufigsten Fehler beim Einsatz von Direktiven.

Es stellt sich die Frage, wie es möglich ist, mehr als eine Direktive in einem Skript zu verwenden, wenn Direktiven - mit der Ausnahme von <%= Ausnahme %> - in der ersten Zeile eines Skripts aufgeführt werden müssen. Um mehrere Direktiven einzuschließen, verwenden Sie folgende Syntax:

<%@ DIRECTIVE1=ValueDIRECTIVE2=Value %>

Es muss mindestens ein Leerzeichen zwischen den einzelnen Direktiven eingefügt werden. Es dürfen hingegen keine Leerzeichen vor und nach Gleichheitszeichen (=) stehen.

CODEPAGE  
<%@CODEPAGE=uintCodePage%>
 

Legt den Zeichensatz (die "Codepage") fest, die zur Interpretation des Skripts auf dem Server verwendet werden soll. Unterschiedliche Sprachen und Locales verwenden eindeutige Zeichensätze. Diese Direktive stellt ähnliche Funktionalität für die Interpretation von Skripts auf dem Server bereit wie die Eigenschaft CodePage des Session-Objekts für die clientseitige Interpretation der an den Client gesendeten HTML. Es sollte jedoch beachtet werden, dass die Vorverarbeitungsdirektive CODEPAGE vorschreibt, wie das Skript selbst interpretiert wird, wohingegen die Eigenschaft CodePage des Session-Objekts bestimmt, wie die sich ergebende HTML verarbeitet wird.

 
Parameter
uintCodePage

Ein Ganzzahlwert ohne Vorzeichen, der einem gültigen Zeichensatz für den Webserver entspricht, auf dem das ASP-Skript ausgeführt wird.

 
Beispiel
<%@ CODEPAGE=932%>

' This code sets the code page to OEM 932, which is
' used for Japanese Kanji.
 
Hinweise

Sie können in einem Skript für das Objekt Session sowohl die Direktive CODEPAGE als auch die Eigenschaft CodePage verwenden. Dies führt dazu, dass das serverseitige Skript für die Direktive CODEPAGE anhand des Ganzzahl-Zeichensatzes ohne Vorzeichen interpretiert wird, die Client-Informationen hingegen mittels des Zeichensatzes der Eigenschaft CodePage des Session-Objekts interpretiert werden.

 
ENABLESESSIONSTATE  
<%@ ENABLESESSIONSTATE=True|False%>
 

Aktiviert (True) bzw. Deaktiviert (False) die Speicherung von benutzerdefinierten Sitzungsinformationen. Dieser Wert ist standardmäßig auf True gesetzt.

 
Parameter

Keine

 
Beispiel
<%@ ENABLESESSIONSTATE=False%>

' This code prevents the web server from storing
' user session information.
 
Hinweise

Sie können über die Registrierung auch die Speicherung nach Sitzungstatus aktivieren. Diese Direktive lässt allerdings wesentlich höhere Flexibilität zu (auf Skript-zu-Skript-Basis). Wenn Sie eine Registrierungseinstellung verwendet haben, um Informationen zum Sitzungsstatus zu steuern, überschreibt der Einsatz dieser Direktive diese Einstellung.

Wenn Sie diese Direktive auf False festlegen, können keine Informationen in sitzungsweitenVariablen oder Objekten gespeichert werden. In diesem Fall müssen Sie zu anderen Methoden greifen, um - falls erforderlich - Informationen zu den einzelnen Benutzern beizubehalten. Sie haben dadurch jedoch auch einige Vorteile:

    Es ist nicht notwendig, dass die Browser Ihres Clients Cookies unterstützen.

    Der Webserver verarbeitet Ihr Serverskript schneller.

 
LANGUAGE  
<%@ LANGUAGE=ScriptingEngine%>
 

Legt die Standard-Skripting-Engine fest, die der Webserver für die Verarbeitung des Skripts in Ihren ASP verwendet. Standardmäßig ist dieser Wert auf "VBScript" gesetzt.

 
Parameter
ScriptingEngine

Eine gültige Skripting-Engine, die von Internet Information Server (IIS) erkannt wird. Gültige Skripting-Engines sind z. B. VBScript, JScript, PerlScript, Python und REXX.

 
Beispiel
<%@ LANGUAGE="JScript"%>

' This code sets the language for the current page to
' JScript, Microsoft's interpretation of the JavaScript
' scripting language. All script on this page will be 
' interpreted using the JScript DLL.
 
Hinweise

Die Auswahl der Direktive LANGUAGE verhindert nicht die Verwendung anderer Skripting-Engines auf Ihrer Skriptseite. Die Direktive legt lediglich die Standard-Skripting-Engine für die Interpretation von Skript auf der aktuellen Seite fest. Die folgenden Beispiele zeigen, wie Sie die Standard-Skripting-Engine für die Seite auf "JScript" einstellen und dennoch "VBScript" für eine bestimmte Prozedur verwenden können.

<%@ LANGUAGE="JScript"%>
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub ShowReport( )
	' This script will be interpreted using the VBScript 
	' scripting engine. 
End Sub
</SCRIPT>

Darüber hinaus hat die Auswahl der Direktive LANGUAGE keine Auswirkung auf die clientseitig verwendete Skripting-Engine. Selbst wenn Sie die LANGUAGE (Sprache) des serverseitigen Skripts auf "PerlScript" einstellen, können Sie das Attribut LANGUAGE des <SCRIPT>-Tags auf der Client-Seite auf "JScript" setzen (siehe folgendes Beispiel):

<%@ LANGUAGE="PerlScript"%>

<%
' All server-side script is interpreted using the PerlScript
' scripting engine.
%>

HTML here...
<SCRIPT LANGUAGE="JScript">
function btnReport_onClick
    ' This script will be interpreted using the JScript 
    ' scripting engine.
End Sub
</SCRIPT>

Zu beachten ist hier, dass nur die Skripting-Engines VBScript und JScript in IIS eingeschlossen sind. Alle anderen Skripting-Engines müssen separat bezogen und installiert werden.

 
LCID  
<%@ LCID=dwordLCID%>
 

Legt einen gültigen Locale-Bezeichner für ein gegebenes Skript fest. Diese Direktive bestimmt verschiedene Formate (z. B. für Datum und Uhrzeit), die für Daten auf der Serverseite verwendet werden.

 
Parameter
dwordLCID

Ein DWORD-Wert (32-Bit, ohne Vorzeichen), der eine gültige Locale-ID darstellt.

 
Beispiel
<%@ LCID=1036%>

' This code sets the locale ID for the server-side
' script to that for French.
 
Hinweise

Genau wie die Auswah der Direktive CODEPAGE keine Auswirkung auf die Eigenschaft CodePage des Session-Objekts hat und darauf, welcher Zeichensatz auf der Client-Seite verwendet wird, hat die Auswahl der Direktive LCID keine Auswirkung auf die LCID, die clientseitig eingesetzt wird. Es sollte jedoch beachtet werden, dass die Vorverarbeitungsdirektive LCID vorschreibt, wie das Skript selbst interpretiert wird, wohingegen die Eigenschaft LCID des Objekts Session bestimmt, wie die sich ergebende HTML verarbeitet wird.

 
TRANSACTION  
<%@ TRANSACTION=strValue%>
 

Weist den Webserver an, das gesamte Skript als eine einzige Transaktion zu behandeln. Wenn Sie das Skript so einstellen, dass eine Transaktion angefordert wird, verwendet der Webserver Microsoft Transaction Server, um sicherzustellen, dass das gesamte Skript als eine Einheit (oder Transaktion) bzw. überhaupt nicht verarbeitet wird. Zurzeit ist ausschließlich die Bearbeitung von Datenbanken als Transaktion möglich.

 
Parameter
strValue

Der Parameter strValue kann folgende Werte annehmen:

Required

Weist den Webserver an, dass das aktuelle Skript eine Transaktion erfordert.

Requires_New

Weist den Webserver an, dass das aktuelle Skript eine neue Transaktion erfordert.

Supported

Weist den Webserver an, keine Transaktion zu starten.

Not_Supported

Weist den Webserver an, keine Transaktion zu starten.

 
Beispiel
<%@ TRANSACTION=Required%>

' This code instructs the web server to start a new
' transaction for the current script.
 
Hinweise

Beachten Sie, dass der Wert für die Direktive TRANSACTION kein String ist. Aus diesem Grund müssen Sie einen Unterstrich für die Werte verwenden, die ein Leerzeichen enthalten (Requires_New und Not_Supported). Wie in Kapitel 6 erläutert, kann nur jeweils ein Skript in einer Transaktion eingeschlossen werden. Achten Sie darauf, dass die Direktive TRANSACTION in der ersten Zeile eines Transaktionsskripts aufgeführt wird. Andernfalls wird ein Fehler erzeugt. In einer Transaktion kann darüber hinaus der Code GLOBAL.ASA nicht eingeschlossen werden.

Wenn ein Fehler in einem Skript auftritt, das in eine Transaktion eingeschlossen ist, macht Microsoft Transaction Server die Aktionen rückgängig, die Transaktionen unterstützen. Zurzeit unterstützen ausschließlich Datenbankaktionen Transaktionen. Beispielsweise werden nicht alle Festplattenaktivitäten von MTS-basierten Transaktionen unterstützt und müssen entsprechend manuell rückgängig gemacht werden.