ASP.Net 运行机制以及HttpModule和HttpHandler

ASP.Net 运行机制


        1.使用动态Web开发技术


        2.客户端通过浏览器输入地址,请求该动态页面


        3.Web服务器根据客户端的请求,对Web应用程序进行编译或解释,并生成HTML流,返回给客户端


        4.客户端浏览器解释HTML流,并显示为Web页面
        


        当请求发送至服务器IIS并被其接收后,IIS服务器会判断请求文件的类型,
        如果是静态文件 如HTML 图片或Text IIS会自行根据目录找到文件并发送给客户端
        如果是动态文件 ASP页面 则IIS会通过aspnet_isapi.dll将请求转交给ASP.Net运行时环境进行处理,最终的处理结果会返回给IIS,发送给客户端

        
        ASP.Net运行时环境中处理请求是通过一系列对象来完成的,包含HttpApplication,HttpModule, HttpHandler


        通过使用HttpApplication对象来处理到的请求,HttpApplication对象每次只能处理一个请求,这样其成员才可以于储存针对每个请求的数据      

        

节点配置关键字

verb  代表谓词 get oist 和ftp等   其中*为通配符 表示所有请求

    path  访问路径  表示只要请求path属性指定的文件 都将有type属性决定的Http
Handler类进行处理

   type  用逗号分隔的类或程序集 asp.net首先在应用程序的专用的Bin目录中进行
搜索,如果未找到,则继续搜索系统程序集缓存

 HttpModule

        对于HTTP请求而言,HttpModule是HTTP请求的“必经之路”,它可以在该HTTP请

求传递到最终的“请求处理中心”(HttpHandler)进行处理之前做一些额外的工作或

在某些情况下终止HTTP请求
        
        HttpModule有多个,每次HTTP请求都将逐一通过每个HttpModule
        HttpModule和HttpAlication对象是直接交互的
        

        
        HttpModule有多个,每次HTTP请求都将逐一通过每个HttpModule
        HttpModule和HttpAlication对象是直接交互的
        
//类

pS:不想引用命名空间 可以把类的命名空间删除

namespace ch2
{
    public class TestHttpModule : IHttpModule
    {
        //资源释放
        public void Dispose()
        {
            throw new NotImplementedException();
        }
        //初始化工作
        public void Init(HttpApplication context)
        {
            //初始化 context  绑定两个事件
            context.BeginRequest += context_BeinRequest;
            context.EndRequest += context_EndRequest;
        }
 
        //在请求处理之前,附加信息
        public void context_BeinRequest(object sender,EventArgs e)
        {
            HttpApplication application = sender as HttpApplication;
            application.Response.Write("<P>开始</P>");
        }
 
        //在请求处理之后,附加信息
        public void context_EndRequest(object sender, EventArgs e)
        {
            HttpApplication application = sender as HttpApplication;
            application.Response.Write("<P>结束</P>");
        }
    }
}


 //配置节点 

以项目文件为起始点

<system.webServer>
    <!--HttpModule对象-->
    <modules>
      <add name="test"  type="ch2.TestHttpModule"  />
    </modules> 
</system.webServer>


HttpHandler

        每个HTTP请求都可能经过多个HttpModule处理,然而最终的处理中心是HttpHandler
        
        一个HTTP请求最终是交给HttpHandler对象的ProcessRequest方法进行处理
        与创建的HttpModule类不同
        VS提供了创建HttpHandler类的模版即一般处理程序(.ashx)

//类

namespace ch2
{
    public class TestHandler : IHttpHandler
    {
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
 
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";
            context.Response.Write("1111111111111111");
        }
    }
}


//配置节点

 <system.webServer>
<handlers>
      <add verb="=*" path="ad/*.aspx"  name="handler"  type="ch2.TestHandler"/>
 </handlers>
</system.webServer>
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值