kblue”
PrefBGColor = “white”
PrefLinkColor = “green”
这就是Session对象产生的地方。
(1) 会话存储的内容
会话存储的内容对指定的访问者是全局的,而对其他访问者来讲是私有的,这使得ASP的会话非常有用。可以用来存储在 ASP Application对象中存储的相同类型的数据,即:
? 简单变量,例如字符串和数值(像所有的ASP脚本变量一样存储为Variant)。
? Variant数组,一维或多维。
? 对一个COM对象的实例的变量引用(如同Variant)。
(2) 会话带来的问题
会话提供了一个存储每个用户特定的值的方法。然而有几个意想不到的问题要注意:
? 记住一些浏览器和Web服务器对URL、路径和文件名的大小写形式是敏感的(例如Navigator和基于UNIX/Linux的服务器)。如果把一个超级链接放置在网页的一个URL上,并且它们不是同样的书写形式,则在浏览器中被认为是不相同的。同样,如果路径和文件名的书写形式不是相同的,则浏览器认为是不同的路径或文件。对于在服务器上的定位资源来讲,这并不重要,因为IIS对书写形式不敏感,可以接受大写形式和小写形式的任何组合,并返回书写形式不同的具有相同字符的文件。然而,如果一个cookie已经指定了一个路径,而且与在超级链接中所指定的路径在书写形式上不同,浏览器可能不会把它以及相应目录的页面一起返回给服务器。这有可能找不到依赖于这个cookie的一个用户会话,并且Session对象将不会在作用域中(即其中的任何变量都是不可用的)。因此,在所有的目录和网页名字中,坚持都采用小写形式或者是比较明显的混合字母形式,是一个好办法。
? 在IIS和ASP的早期版本中,对于嵌套的应用程序还有一些小的“Bug”,有时,当用户离开嵌套的ASP虚拟应用程序并返回到缺省的ASP应用程序层时,与嵌套应用程序内部已经定义的局部变量相同的名字的任何全局变量不能重新显现。还有,当会话使用Session.Abandon方法(稍后将会看到)终止时,global.asp文件中的代码将执行失败。在ASP 3.0中已经解决了这些问题。
? 记住会话依赖于cookie。如果访问者已经禁止使用cookie或者浏览器不支持cookie,将不能启动一个会话,并且不能访问Session对象。
(3) 禁止会话
虽然状态提供了有益环境,但让用户门户大开。如果不需要保留状态,可以禁止会话以节约计算机的处理时间。例如,在一个不需要跟踪访问者或不需要为访问者保留全局值的Web网站上,可以防止会话启动,通过在Internet Services Manager中设置属性,或为不需要状态的独立网页增加代码(稍后将看到)。
为了禁止整个Web网站的所有会话,可编辑缺省Web网站应用程序的属性。为了禁止一个指定应用程序的会话,可编辑相应虚拟应用程序的属性。打开相应的应用程序的Properties对话框,在Home Directory页上单击Configuration按钮,如图3- 10所示:
图3-10 Home Directory页
在出现的Configuration对话框中,打开App Option。这里可以允许或禁止整个应用程序的会话(在本例中是整个缺省Web 站点),也可以修改缺省的会话Timeout值。在图3-11中可以看到Timeout设置为20min。在ASP的早期的版本中这是缺省值,可根据要求设置相应的值(在ASP 3.0中,缺省值是10min)。
图3-11 App Options页
如果要禁止一个指定网页的会话,同时允许它们在同一个应用程序的其他网页中创建和使用,可为该页面增加一条ASP处理指令。它跟在指定缺省语言的语句后(如果没指定一个缺省语言,可单独使用该指令):
<%@LANGUAGE=”VBScript” ENABLESESSIONSTATE=”False”%>到此为止,大致介绍了ASP应用程序和Session对象的一些情况,下面详细地进行讨论。
上一页 [1] [2]