Session global.asa中的经典asp错误:需要对象:';会议';

Session global.asa中的经典asp错误:需要对象:';会议';,session,asp-classic,vbscript,global.asa,Session,Asp Classic,Vbscript,Global.asa,安装了asp.net 2.0*的Windows 2003计算机上的服务器端VB asp代码。我们遇到了一个奇怪的问题,用户第一次连接到网站时,Global.asa中的Session_OnStart会启动,但Session对象为null。简单地说: Session.Timeout = 30 导致以下错误:需要对象:“会话” 该网站已在IIS管理器主目录选项卡中“创建”,并且在该网站的配置页面中启用了会话 在大多数情况下,如果用户刷新页面,会话对象就会存在。但对于唯一用户的第一次访问总是会导致错误

安装了asp.net 2.0*的Windows 2003计算机上的服务器端VB asp代码。我们遇到了一个奇怪的问题,用户第一次连接到网站时,Global.asa中的Session_OnStart会启动,但Session对象为null。简单地说:

Session.Timeout = 30
导致以下错误:需要对象:“会话”

该网站已在IIS管理器主目录选项卡中“创建”,并且在该网站的配置页面中启用了会话

在大多数情况下,如果用户刷新页面,会话对象就会存在。但对于唯一用户的第一次访问总是会导致错误

建议?代码没有错误,因为它在旧的Win2000系统上工作


只是重申一下:Windows2003Server,运行IIS6,安装了.NET2.0。网站是作为应用程序而不是虚拟目录运行的。

这是一个非常有趣的问题

我们知道,当会话被明确放弃或最终超时时,它会立即被销毁。我会添加如下代码,以保证它不会发生

If Session("test") Is Nothing Then
    Response.Redirect("Whatever.asp")
End If

您还可以调用在此块中创建对象的代码;这样,如果您检测到会话以某种方式被破坏,您可以重新创建会话。

解决了问题。这是因为该网站使用的应用程序池中有多个工作人员。由于无法保证哪个工作进程将处理客户机的请求,并且每个工作进程将创建自己的客户机会话实例,因此当IIS决定另一个工作进程应处理请求时,会话将被删除并重新创建。通过在应用程序池中只使用一个工作进程,并将所有其他网站从应用程序池中取出并放入它们自己的应用程序池中,问题得到了解决


我现在正在寻找一种方法,让应用程序池中有多个worker,但让客户端坚持worker进程。但这是我要研究的另一个问题。

听起来像是将经典ASP与ASP.net混合使用经典ASP.net没有“配置页”经典ASP与ASP.net 2.0无关如果您尝试运行ASP.net,则需要将全局文件重命名为Global.asax。不要尝试运行任何ASP.net,只需ASP。我想我会列出安装了什么。可能由于应用程序尚未完成初始化(作为第一个请求),因此尚未创建
会话
,因此我想没有真正的修复方法。您是否有任何其他用途来使用
会话
,或者您只是在设置其
超时
值?我们正在初始化一组用户信息,以及设置超时值。奇怪的是它是一致的。每个新用户都会失败。它也是一台速度很快的机器,所以我不知道为什么会出现问题。它在旧的、较慢的机器上运行良好;session(“test”)=1 response.write session(“test”)并让我们知道发生了什么。尝试了这个,有时用户会在这两个会话之间循环几秒钟。。。不太理想。网络花园,番茄花园。。。当然对