You can store values in the Session object. Information stored in the Session object is available throughout the session and has session scope. The following script demonstrates storage of two types of variables:
<%
Session("username") = "Janine"
Session("age") = 24
%>
However, if you store an object in the Session object and use VBScript as your primary scripting language, you must use the Set keyword, as illustrated in the following script.
<% Set Session("Obj1") = Server.CreateObject("MyComponent.class1") %>
You can then use the methods and properties exposed by MyComponent.class1 on subsequent Web pages, by using the following:
<% Session("Obj1").MyMethod %>
Or by extracting a local copy of the object and using the following:
<%
Set MyLocalObj1 = Session("Obj1")
MyLocalObj1.MyObjMethod
%>
Another way to create objects with session scope is to use the <OBJECT> tags in the Global.asa file.
You cannot, however, store a built-in object in a Session object. For example, each of the following lines returns an error.
<%
Set Session("var1") = Session
Set Session("var2") = Request
Set Session("var3") = Response
Set Session("var4") = Server
Set Session("var5") = Application
%>
Before you store an object in the Session object, you should know what threading model it uses. Only objects marked as both can be stored in the Session object without locking the session to a single thread.
If you store an array in a Session object, you should not attempt to alter the elements of the stored array directly. For example, the following script does not work:
<% Session("StoredArray")(3) = "new value" %>
The preceding script does not work because the Session object is implemented as a collection. The array element StoredArray(3) does not receive the new value. Instead, the value is indexed into the collection, overwriting any information stored at that location.
It is strongly recommended that if you store an array in the Session object, you retrieve a copy of the array before retrieving or changing any of the elements of the array. When you are finished using the array, you should store the array in the Session object again, so that any changes you made are saved, as demonstrated in the following example:
--- File1.asp ---
<%
'Creating and initializing the array
Dim MyArray()
Redim MyArray(5)
MyArray(0) = "hello"
MyArray(1) = "some other string"
'Storing the array in the Session object.
Session("StoredArray") = MyArray
Response.Redirect("file2.asp")
%>
--- File2.asp ---
<%
'Retrieving the array from the Session Object
'and modifying its second element.
LocalArray = Session("StoredArray")
LocalArray(1) = " there"
'Printing out the string "hello there."
Response.Write(LocalArray(0)&LocalArray(1))
'Re-storing the array in the Session object.
'This overwrites the values in StoredArray with the new values.
Session("StoredArray") = LocalArray
%>