global.asa中的经典ASP错误:必需对象:'session'
-
24-10-2019 - |
题
服务器端VB ASP代码在Windows 2003计算机上安装了ASP.NET 2.0*。我们遇到了一个奇怪的问题,即用户第一次连接到网站时,session_onstart在global.asa中触发,但是会话对象为null。简单的东西:
Session.Timeout = 30
导致以下错误:必需对象:'session'
该网站是在IIS Manager主目录选项卡中“创建”的,并且在该站点的配置页面中启用了会话。
在大多数情况下,如果用户刷新页面,则会存在会话对象。但是,第一次访问唯一用户总是会导致错误。
建议?该代码没有错误,因为它在旧的Win2000系统上工作。
只是重申:Windows 2003服务器,运行IIS6,安装了.NET 2.0。网站是作为应用程序运行的,而不是虚拟目录。
解决方案
弄清楚了这个问题。这是由于应用程序池中有多个工人用于网站。由于无法保证哪个工作流程会处理客户的请求,并且每个工作过程都会创建其自己的客户会话实例,因此当IIS决定其他工作过程应处理请求时,将删除和重新创建会话。通过在应用程序池中仅使用一个工作流程,将所有其他网站从应用程序池中汇出并自己的所有其他网站来解决问题。
我现在正在寻找一种在应用程序池中有多个工人的方法,但是让客户坚持工作过程。但这是我研究的另一个问题。
其他提示
一个有趣的问题。
我们知道,当会议被明确放弃或最终被淘汰时,它会立即被摧毁。我会添加如下的代码,以确保它不会发生。
If Session("test") Is Nothing Then
Response.Redirect("Whatever.asp")
End If
您也可以调用在此块中创建对象的代码;这样,如果您发现会议被以某种方式被摧毁,则可以重新创建它们。
不隶属于 StackOverflow