Webclass 的生存周期

和一个基于窗体的应用程序一样,一个 webclass 可以被初始化和被破坏,虽然这些事件的激发和窗体的不同。另外,一个 webclass有几个其他的事件来标记它在生存周期中的不同阶段,指示什么时候浏览器显示第一个 webitem 和什么时候请求被收到和执行。

在一个 webclass 的生命周期中有几个关键的事件:

  1. 当一个最终用户访问作为您的 IIS 应用程序宿主的.asp (Active Server Pages)文件时,Initialize 事件发生。在 Initialize 事件中,webclass 是作为一个对象被创建的。这个事件始终是 webclass 生命周期中的第一个事件。

    注意 如果 webclass 的 StateManagement 属性被设置为 wcNoState,webclass在它每次收到一个HTTP请求时激发一个Initialize事件。关于设置StateManagement属性的详细信息,请参阅“ IIS 应用程序中的状态管理器”。

  2. 当用户启动应用程序时,BeginRequest 事件是 Initialize 事件后被调用的下一个事件,并且在 webclass 每次从浏览器收到一个后续的请求时它也被激发。这个事件标记着一个 HTTP 请求处理的开始。您可以使用这个事件去执行 webclass 将执行的每一个请求所需要的处理。例如,您可以使用 BeginRequest 从一个数据库中获取状态信息或在处理一个请求前验证用户信息。

  3. Start 事件通常是在应用程序第一次激发 BeginRequest 时发生的,在后续的请求时,它不再被激发。通常这个事件用于向浏览器发送一个初始化响应,对指定的 webitem 启动 Respond 事件。

    注意 如果最终用户在其使用的开始的 URL 中指定了一个 webitem 和事件用于启动应用程序,则 webclass 不激发 Start 事件。在这种情况下,指定的事件将是激发的第一个事件。关于详细信息,请参阅“设置初始事件”。

  4. 当 webclass 已完成一个 HTTP 请求的处理并且已向客户返回一个响应时 EndRequest 事件发生。在一个响应返回到客户之前,一个事件的处理可能需要webclass 去处理几个模板或 webitem 以及与它们相关的事件过程。

  5. Terminate 事件告诉运行时 DLL 去破坏 webclass 的实例。

    注意 如果 webclass 的StateManagement 属性被设置为wcNoState,webclass在它每次向浏览器发送一个响应时激发 Terminate 事件。如果 webclass 的 StateManagement 属性被设置为 wcRetainInstance,webclass 仅在它调用 ReleaseInstance 方法后激发 Terminate 事件。关于设置 StateManagement 属性的详细信息,请参阅“IIS 应用程序的状态管理器”。

对于 IIS 应用程序没有 Load 和 Unload 事件。BeginRequest 或 EndRequest 事件可以完成 Load 和 Unload 事件所做的某些相同功能,这些事件可以用于对您应用程序运行时需要的值进行初始化、在一个请求结束时清理状态和其他的值。Begin 和 EndRequest 是一个 webclass 独特的事件。一个 webclass 在它的整个生命周期中可以收到多个请求。这些事件允许 webclass将每一个请求作为唯一的实体来处理。