Asp.Net HttpApplication请求管道与Session(一)

1.请求处理顺序执行事件

        /********************请求处理顺序执行事件**********************/
        /// <summary>
        /// 请求入站
        /// 在此管道中禁止访问Session
        /// </summary>
        protected void Application_BeginRequest()
        {
            Response.Write("----BeginRequest---");
            Response.Write("<br/>");
        }
        /// <summary>
        /// 发送内容到客户端之前
        /// 此管道中禁止访问Session
        /// </summary>
        protected void Application_PreSendRequestContent()
        {
            Response.Write("----PreSendContent---:");
            Response.Write("<br/>");
        }
        /// <summary>
        /// 页面框架执行
        /// 此管道中可以访问Session
        /// </summary>
        protected void Application_PostRequestHandlerExecute()
        {
            Response.Write("----PostRequestHandlerExecute---count:" + Session.Count + ",当前SessionID:" + Session.SessionID);
            StringBuilder builder = new StringBuilder();
            Response.Write("<div style=‘text-indent:2em;‘>");
            foreach (string item in Session.Keys)
            {
                string line = string.Format("---{0}:{1}", item, Session[item]);
                builder.AppendLine(line);
            }
            Response.Write(builder.ToString());
            Response.Write("</div>");
            Response.Write("<br/>");
        }
        /// <summary>
        /// 页面框架释放请求状态
        /// 此管道中禁止访问Session
        /// </summary>
        protected void Application_ReleaseRequestState()
        {
            Response.Write("----ReleaseRequestStatet---");
            Response.Write("<br/>");
        }
        /// <summary>
        /// 页面框架响应完成
        ///此管道,禁止使用Session
        /// </summary>
        protected void Application_UpdateRequestCache()
        {
            Response.Write("----UpdateRequestCache---");
            Response.Write("<br/>");
        }
        /// <summary>
        /// 请求出站
        /// 此管道中禁止访问Session
        /// </summary>
        protected void Application_EndRequest()
        {
            Response.Write("----EndRequest---");
            Response.Write("<br/>");
        }

没有添加Session数据前访问:

添加Session 数据后访问:

时间: 2024-08-02 00:02:38

Asp.Net HttpApplication请求管道与Session(一)的相关文章

ASP.NET MVC5请求管道和生命周期

请求处理管道 请求管道是一些用于处理HTTP请求的模块组合,在ASP.NET中,请求管道有两个核心组件:IHttpModule和IHttpHandler.所有的HTTP请求都会进入IHttpHandler,有IHttpHandler进行最终的处理,而IHttpModule通过订阅HttpApplication对象中的事件,可以在IHttpHandler对HTTP请求进行处理之前对请求进行预处理或IHttpHandler对HTTP请求处理之后进行再次处理. 在IIS7之前,如IIS6或IIS5,请

asp.net的请求管道事件

一.引言 上篇介绍了Http的请求过程提到了在请求进入到创建完 HttpApplication 对象后,将进入一系列的处理事件Event,那么这些事件具体都有哪些呢,这篇文章就来简要阐述一下. 二.正文 既然请求最后交给了 HttpApplication 处理,那么通过获取该对象,我们就可以通过反射来获取到该对象当中所有的事件,先看下具体的代码. public ViewResult GetEvents() { HttpApplication application = HttpContext.A

Asp.net mvc 中处理同一个session的并行请求的问题

首先来一个小的asp.net mvc 4的sample,代码如下: HomeController: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.SessionState; namespace MvcApplication2.Controllers { public class HomeContr

ASP.NET MVC5 的请求管道和运行生命周期

https://www.jianshu.com/p/848fda7f79e0 请求处理管道 请求管道是一些用于处理HTTP请求的模块组合,在ASP.NET中,请求管道有两个核心组件:IHttpModule和IHttpHandler.所有的HTTP请求都会进入IHttpHandler,有IHttpHandler进行最终的处理,而IHttpModule通过订阅HttpApplication对象中的事件,可以在IHttpHandler对HTTP请求进行处理之前对请求进行预处理或IHttpHandler

ASP.NET MVC入门到精通——14.MVC请求管道

本系列目录:ASP.NET MVC4入门到精通系列目录汇总 ASP.NET MVC的请求管道和ASP.NET请求管道基本上一模一样,如果你对ASP.NET请求管道十分熟悉的话,你只要关注一下不同点.看懂下面两张图,你就基本上明了了,不明天的地方,用reflector工具查看MVC的源码,没其它的..NET框架的源码里面几乎涉猎了各种设计模式.这一节的内容,我也不知道怎么说,都在图里面了,看图比直接用文字说明要明了得多,比较这些东西还是比较抽象的,如果你时间充裕,建议看下MVC的源码.怎么看?就找

ASP.NET请求管道、应用程序生命周期、整体运行机制

我们知道在ASP.NET中,若要对ASP.NET应用程序进行 初始化并使它处理请求,必须执行一些处理步骤,熟悉应用程序生命周期非常重要,这样才能在适当的生命周期阶段编写代码,达到预期的效果.永远不要做只会拖 控件的.NET程序员,Never!那么你就必须懂ASP.NET应用程序生命周期,懂ASP.NET页面生命周期,懂ASP.NET 服务器控件原理.接下来,我们一起来看看 可以先看一下先导篇 [深入ASP.NET原理系列]--ASP.NET请求管道对Asp.Net WebForm和Asp.Net

ASP.NET MVC请求处理管道生命周期的19个关键环节(7-12)

转自http://www.cnblogs.com/darrenji/p/3795676.html 在上一篇"ASP.NET MVC请求处理管道生命周期的19个关键环节(1-6) ",体验了1-6关键环节,本篇继续. ⑦根据IsapiWorkerRequest对象,HttpRuntime创建HttpContext对象 ⑧HttpApplicationFactory创建新的或者从HttpApplication池获取现有的.可用的HttpApplication对象 HttpApplicati

ASP.NET MVC请求处理管道生命周期的19个关键环节(13-19)

转自:http://www.cnblogs.com/darrenji/p/3795690.html 在上一篇"ASP.NET MVC请求处理管道生命周期的19个关键环节(7-12) ",体验了7-12关键环节,本篇继续. ⒀当请求到达UrlRoutingModule的时候,UrlRoutingModule取出请求中的Controller.Action等RouteData信息,与路由表中的所有规则进行匹配,若匹配,把请求交给IRouteHandler,即MVCRouteHandler M

细说Asp.Net WebAPI消息处理管道

我们在开发完Asp.Net WebAPI程序后,可以使用WebHost寄宿方式或者SelfHost寄宿方式来部署Asp.Net WebAPI.所谓WebHost寄宿就是通过Asp.Net来实现:所谓SelfHost就是可以通过控制台.WinForm.WPF等方式寄宿.下面我们通过简单的例子来看看WebHost方式和SelfHost方式. 该Demo中包含一个类库项目.一个控制台项目以及一个空的WebForm项目.其中类库项目有一个继承自ApiController的名为HomeController