源码解析HttpApplicationFactory类的功能

一、综述: 

  HttpApplicationFactory类的主要作用是创建并且管理用于处理Http请求的HttpApplication对象。

   HttpApplication是ASP.NET Pipline(管道)的载体,管理了请求的整个生命周期。正是在这个类里,ASP.NET以管道的模式处理所有的请求。

  

  HttpApplication将管道处理的不同阶段要处理的事情以事件的方式对外开放,关注某事件Module(模块)在自己的内部注册这些事件,

然后HttpApplication对象根据http请求所处的不同阶段,分别触发这些事件,完成对http请求的处理。 

 

      如SessionStateModule模块就注册了获取状态和发布状态的事件。获取状态事件被触发时,该模块会获取一个Session对象,赋值给HttpContext对象,这样在

执行处理程序阶段,我们就可以访问Session对象进行存取数据(对于MVC5,这个过程是在控制器的Action中)。等到了发布状态事件时,该模块会根据适当的情况,

将Session中的数据持久保存起来,然后将Session对象从HttpContext对象中删除。已在其他随笔里介绍了SessionStateModule模块的核心功能。

 

  当然在这里只是简单介绍HttpApplication的作用,该类的功能十分强大完善,但也特别复杂,所以会在另外的随笔里单独介绍。

  在这里介绍HttpApplication只是为了引出HttpApplicationFactory。

 

二、详细介绍: 

  HttpApplicationFactory内部使用了Stack(栈)来存储多个HttpApplication对象。

   主要功能如下:

   1、创建存储HttpApplication对象,包括循环使用等。

   2、将我们在Global.asax文件中定义的事件整理出来,然后在HttpApplication初始化时传递初始化方法。在下面的示例代码中,我们注册了请求开始事件,

   这个事件将会向文档中输出一句话,而这句话也会显示在我们的网页里。

 1     public class MvcApplication : System.Web.HttpApplication
 2     {
 3         protected void Application_Start()
 4         {
 5             AreaRegistration.RegisterAllAreas();
 6             FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
 7             RouteConfig.RegisterRoutes(RouteTable.Routes);
 8             BundleConfig.RegisterBundles(BundleTable.Bundles);
 9         }
10 
11         protected void Application_BeginRequest(object sender,EventArgs e)
12         {
13             HttpApplication application = sender as HttpApplication;
14             HttpResponse resp = application.Context.Response;
15             resp.Write("<h1>要开始处理请求了;</h1>");
16         }
17     }

   我们在

转载于:https://www.cnblogs.com/lgshare/p/9095004.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值