测试ASP_NET 生命周期

简介:

抽空看了一下博主GodSpeed 的《ASP.NET应用程序生命周期趣谈系列》的三篇文章,讲解得不错。尤其是第三篇文章 ASP.NET应用程序生命周期趣谈(三) HttpModule 的后半段,让我收获颇多,顺便自己也做了一个Demo 进行测试。

首先:我在Web.config 配置文件中,分别在 <httpHandlers><httpModules> 节点添加了自己的配置。

Web.config 代码如下:

<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
<add verb="*" path="*.aspx" type="Web_1.XG_Handler"/>
</httpHandlers>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="XG_Module" type="Web_1.XG_Module"/>
</httpModules>

其次:我添加了一个XG_Module.cs 类文件

XG_Module 类实现了IHttpModule 接口

XG_Handler 类实现了IHttpHandler 接口

XG_Module.cs 代码如下:

using System;
using System.Configuration;
using System.Web;
namespace Web_1
{
/*
* 在Web.config中: <add name="XG_Module" type="Web_1.XG_Module"/>
*/
public class XG_Module:IHttpModule
{
#region IHttpModule 成员
public void Dispose()
{ }
public void Init(HttpApplication context)
{
System.Diagnostics.Debug.WriteLine("调式输出:XG_Module 哈哈~~ ");
//this.Init(context); //错误
}
#endregion
}
/*
* 在Web.config中:<add verb="*" path="*.aspx" type="Web_1.XG_Handler"/>
*/
public class XG_Handler : IHttpHandler
{
#region IHttpHandler 成员
public bool IsReusable
{ get { return true; } }
public void ProcessRequest(HttpContext context)
{
//获得客户端请求
System.Diagnostics.Debug.WriteLine(context.Request.QueryString[0]);
//返回服务器响应
context.Response.Write("输出:XG_Handler 呵呵~~ ");
}
#endregion
}
}

XG_Module 类XG_Handler 类中的System.Diagnostics.Debug.WriteLine( ) 方法在预期的时间打印了调试信息。

最后:为了更加直观的看到客户端与服务器端的通讯,我再次编写了一个客户端页面AJAX_test.html 使用AJAX 技术直接与服务器通讯,效果更佳。

AJAX_test.html 代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
var xmlhttp;
//创建异步对象
function initXmlHttp(){
if(window.ActiveXObject){ //IE浏览器
xmlhttp = new window.ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest){ //非IE浏览器
xmlhttp = new window.XMLHttpRequest();
}
}
window.onload = initXmlHttp;
//发送异步请求
function sendRequest(){
xmlhttp.open("GET","AJAX_servers.aspx?myname=xg"); //传参myname
//指定当readyState属性改变时的事件处理句柄onreadystatechange
xmlhttp.onreadystatechange = funState;
xmlhttp.send(null);
}
//获取异步结果
function funState(){
if( xmlhttp.readyState == 4)
{
if( xmlhttp.status == 200 || //status==200 表示成功!
xmlhttp.status == 0 ) //本机测试时,status可能为0。
{
var re = xmlhttp.responseText;
//alert(re);
document.getElementById("divShow").innerHTML = re;
}
}
}
</script>
</head>
<body>
<button onclick="sendRequest();">发送</button>
<div id="divShow"></div>
</body>
</html>

对于代码,我就不多解释了,注释写得很清楚。

附加:管道+上下文(Pipeline + Context)模式

ASP.NET 的运行时就可以看成是一个由若干HttpModule 组成的处理HTTP 请求的管道,ASP.NET 运行时管道的上下文对象是HttpContext ;

WCF 中Binding 就是一个由若干信道(Channel)组成的处理Message 的管道,而Binding 管道的上下文对象是BindingContext ;

相同的设计还体现在.NET Remoting、BizTalk、Unity(Unity 是微软P&P推出的一个开源的IoC框架)等相关框架和产品的设计上。[引用来源:你知道Unity IoC Container是如何创建对象的吗?]




本文转自钢钢博客园博客,原文链接:http://www.cnblogs.com/xugang/archive/2010/07/14/1777333.html,如需转载请自行联系原作者

相关文章
|
20天前
|
机器学习/深度学习 人工智能 自然语言处理
探索自动化测试在软件开发生命周期中的关键作用
在当今快节奏的软件开发环境中,自动化测试已成为确保软件质量和加速产品上市时间的重要工具。本文深入探讨了自动化测试在软件开发生命周期(SDLC)各个阶段的应用和效益,包括需求分析、设计、编码、测试和维护等环节。通过具体案例分析,展示了自动化测试如何帮助团队提高测试效率、减少人为错误并缩短产品迭代周期。文章还讨论了实施自动化测试时面临的挑战,如选择合适的工具、编写可维护的测试脚本和处理动态变化的需求,以及如何克服这些挑战的策略。最后,提出了自动化测试的未来趋势,强调了持续集成/持续部署(CI/CD)流程中自动化测试的重要性,以及人工智能和机器学习技术在自动化测试领域的潜力。
|
5月前
|
人工智能 监控 安全
自动化测试在软件生命周期中的重要性
随着软件开发周期的加速,自动化测试成为确保软件质量和缩短上市时间的关键因素。本文旨在探索自动化测试如何在不同阶段提升效率与质量,并分析其在当前软件开发生态中的不可替代性。
|
5月前
|
测试技术 持续交付 开发者
探索自动化测试在持续集成中的应用及其对软件开发生命周期的影响
本文将深入探讨自动化测试在现代软件开发中的核心地位,特别是其如何与持续集成(CI)流程紧密结合,以提升软件交付的速度和质量。文章首先概述了自动化测试的基本概念和类型,随后分析了自动化测试在持续集成环境中的关键作用,包括提高测试效率、确保代码质量、促进团队协作等方面。最后,通过具体案例分析,展示了自动化测试实施的策略和挑战,以及它如何优化软件开发生命周期。本文旨在为软件测试工程师和开发团队提供实践指南,帮助他们更好地理解和应用自动化测试技术。
62 10
|
4月前
|
数据采集 安全 测试技术
软件交付质量问题之在软件交付的生命周期里,要合理安排全方位的测试,该如何实现
软件交付质量问题之在软件交付的生命周期里,要合理安排全方位的测试,该如何实现
|
5月前
|
监控 测试技术 持续交付
自动化测试在软件生命周期中的价值与挑战
本文通过深入分析自动化测试在软件开发过程中的应用,揭示其在提升效率、确保质量和减少成本方面的显著优势。同时,探讨了实施自动化测试时面临的技术复杂性、维护成本和技能缺乏等挑战,并提出了相应的解决方案。文章旨在为软件测试专业人士提供一个关于自动化测试实践的全面视角,帮助他们更好地规划和执行测试策略。
|
6月前
|
编解码 测试技术 数据库连接
【软件测试】 软件测试生命周期与Bug
【软件测试】 软件测试生命周期与Bug
|
5月前
|
jenkins 数据管理 测试技术
在LabVIEW开发生命周期中提高代码质量的自动化测试方法
在LabVIEW开发生命周期中提高代码质量的自动化测试方法
66 0
|
6月前
|
测试技术 程序员 开发者
软件测试项目式学习一(认识软件生命周期与开发模型及软件质量)
软件测试项目式学习一(认识软件生命周期与开发模型及软件质量)
82 0
|
7月前
|
测试技术
深入理解与应用软件测试的生命周期管理
【5月更文挑战第27天】 在软件开发的世界中,确保产品质量的关键步骤之一是执行细致的软件测试。本文将重点探讨软件测试生命周期(STLC)的各个阶段,包括需求分析、测试计划、测试设计、测试实施、测试评估和缺陷管理等关键节点,以及如何有效地利用这些阶段来提高测试效率和产品的质量。通过实际案例分析和最佳实践的分享,我们旨在为读者提供一套系统的方法论,帮助他们在软件测试领域实现更高的专业水平。
|
7月前
|
编解码 测试技术 程序员
软件测试的生命周期
软件测试的生命周期
134 0

热门文章

最新文章