1.基本原理图


 

【.net项目中。。】.net一般处理程序使用方法

IsReusable属性用来表示在IHttpHandlerFactory对象创建IHttpHandler的时候是否能够将这个Handler存入池中以便重用。

一般处理程序(HttpHandler):是一个实现System.Web.IHttpHandler接口的特殊类。任何一个实现了IHttpHandler接口的类,是作为一个外部请求的目标程序的前提。(凡是没有实现此接口的类,就不能被浏览器请求。)

它由支持ASP.NET的服务器调用和启动运行。一个HttpHandler程序负责处理它所对应的一个或一组URL地址的访问请求,并接收客户端发出的访问请求信息(请求报文)和产生响应内容(响应报文)。

简单的说:咱可以通过创建一个我们自己的HttpHandler程序来生成浏览器代码发送回客户端浏览器。

HttpHandler程序可以完成普通类程序所能完成的大多数任务:

  1.获取客户端通过HTML的Form表单提交的数据和URL参数

  2.创建对客户端的响应消息内容

  3.访问服务器端的文件系统

  4.连接数据库并开发基于数据库的应用

  5.调用其他类

2.生命周期:


 

【.net项目中。。】.net一般处理程序使用方法

请求管道的19个事件:

(1)BeginRequest: 开始处理请求

(2)AuthenticateRequest授权验证请求,获取用户授权信息

(3):PostAuthenticateRequest获取成功

(4): AunthorizeRequest 授权,一般来检查用户是否获得权限

(5):PostAuthorizeRequest:获得授权

(6):ResolveRequestCache:获取页面缓存结果

(7):PostResolveRequestCache 已获取缓存 当前请求映射到MvcHandler(pr): 创建控制器工厂 ,创建控制器,调用action执行,

view→response

(8):PostMapRequestHandler 创建页面对象:创建 最终处理当前http请求的 Handler 实例: 第一从HttpContext中获取当前的PR Handler

  ,Create

(9):PostAcquireRequestState 获取Session

(10)PostAcquireRequestState 获得Session

(11)PreRequestHandlerExecute:准备执行页面对象
   执行页面对象的ProcessRequest方法

(12)PostRequestHandlerExecute 执行完页面对象了

(13)ReleaseRequestState 释放请求状态

(14)PostReleaseRequestState 已释放请求状态

(15)UpdateRequestCache 更新缓存

(16)PostUpdateRequestCache 已更新缓存

(17)LogRequest 日志记录

(18)PostLogRequest 已完成日志

(19)EndRequest 完成、

 

3.一个小例子——前台实现用户名的验证


 

在说一般处理程序之前,先来看看什么是aspx。在vs中,使用的大多是aspx页面。aspx页面就
是在接收到一个请求之后,将返回的结果生成一个html页面返回给服务器。当我们有时候需要自己来处理这个结果,而不是直接返回html的时候。怎么做呢?这时候就需要一般处理程序了。一般处理程序就是这样一个只有cs页面,而没有前台的文件。扩展名为ashx。

实例验证用户名

JS


<script type="text/javascript" >


//验证用户名是否正确
function JudgeUserName() { 
var username = $("#userName").val()
$.ajax({
type: "Post",
url: 'RegisterUserNameVerity.ashx/ProcessRequest?username='+username,
success: function (result) {
if (username == "") {
alert("用户名不能为空!");
document.getElementById("userName").focus();
document.getElementById("userName").selected;


} else {
if (result == "True") {
alert("已存在,请您重新选择一个用户名!")
document.getElementById("userName").focus;
document.getElementById("userName").select();
} 

} 
},
});
}


</script>

  

 

 

 

Html

 

<input type="text" onblur="JudgeUserName()" />  

 

一般处理程序

 

 1 public void ProcessRequest(HttpContext context)
 2 {
 3 //获取从前台传过来
 4 string userName = context.Server.UrlDecode(context.Request.QueryString["username"]);
 5 //声明查询用户名是否存在的对象
 6 userBLL verifyusernamebll = new userBLL();
 7 //通过其他的函数来判断
 8 bool flag=verifyusernamebll.Exists(userName);
 9 if (flag==true)
10 {
11 context.Response.Write(true);
12 }
13 else
14 {
15 context.Response.Write(false);
16 }
17 }
一般处理程序

相关文章:

  • 2021-07-15
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-01
  • 2022-12-23
  • 2021-10-26
  • 2021-11-24
  • 2022-01-24
相关资源
相似解决方案