一次有趣的测试

一、测试环境
CPU: Pentium 4,2.0A * 1,
RAM: 1GB
OS: Microsoft Windows 2003 Server + SP1 中文企业版
IDE: Visual Studio .net 2003
OTHER: 配置均为默认
APPDOMAIN: 虚拟目录为Application,目录安全性为允许匿名访问
 应用程序+[一个自定义Module+一个进行步骤记录的临界对象]
二、测试过程
非测试环境下,分别打开三个IE窗口;
http://localhost/application/default.aspx
http://user/application/default.aspx
http://192.168.123.120/application/default.aspx
三个Http请求发出的时差<1秒
然后相继关闭。
Application.Log文件记录全部运行步骤(包括栈跟踪)。
三、测试结果
1.一共产生四个HttpApplication实例
其中一个是顶级实例,每个会话对应一个
2.一共涉及四个不同的线程,
但线程与HttpApplication之间没有对应关系,只与并发性相关。
3.Global中的事件方法分别在不同的HttpApplication中激活:
以下方法在顶级实例中运行:
Application_Start
Session_End
Application_End
以下方法在会话绑定的实例中运行:
Application_BeginRequest
Application_AuthenticateRequest
Session_Start
Application_EndRequest
在自定义HttpModule的Init和Dispose方法都在与会话绑定的实例中运行。
4.顶级HttpApplication实例的运行过程:
(Application.ctor运行时的上下文中没有HttpServer实例,所以无法记录步骤。)
首先运行Application_Start(因接受Http请求而触发)
然后等候每个Session超时后,运行Session_End
所有Session都释放后大约20分钟(根据以往的测试经验,同样设置下20~40分钟不等)后
开始结束顶级实例,先释放所有的Module,再运行Global中的Application_End方法,并释放所有资源。
5.为Http请求建立的实例的运行过程:
为HttpContext建立会话;
为每个会话建立所有的模块(由Machine.config和Web.config的httpModules决定)
运行Application_BeginRequest和Application_AuthenticateRequest;
运行Session_Start;
输出页面后,运行Application_EndRequest;
按Web.Config的设定等候Session超时。

你可能感兴趣的:(一次有趣的测试)