zoukankan      html  css  js  c++  java
  • ASP.NET 生命周期及管道事件

    Client(发送报文:请求行+请求头+空行+请求体) <------ Http 协议 ------> Server,由
     
    Http.sys 监听 Http 请求 -> WAS+Metabase(通过URL确定WebApp工作进程) ->
     
    W3WP.exe(一个应用程序池,加载Aspnet_IsAPI.dll) ->AppDomainFactory(构造 ApplicationManager)->ISAPIApplicationHost+ISAPIRuntime(由ApplicationManager创建)->
     
    ISAPIWorkerRequest(根据句柄内存块封装Http请求信息,IIS版本等等)+ HttpRuntime,然后
     
    HttpRuntime 开始接收ISAPIWorkerRequest,并如下进行处理:
     
    创建 HttpContext(包含HttpRequest/HttpResponse等等), 和通过HttpApplicationFactory 获取或创建HttpApplication(包含HttpContext),
     
    最后执行 HttpApplication 的 ProcessReuqest(...)。在执行过程中,所包含的管道事件,将按顺序触发。
     
    如果某些管道事件在 HttpModule 中有被重新注册,则执行相应事件处理程序。
     
    //context_xxxxxx 为 asp.net 管道事件,目的是逐步完善HttpContext内容
     
    Application_Start
     
    
    context_BeginRequest ////1.开始处理请求,httpModule 开始,在这之前所有实现IHttpModule的*.cs,将通过反射加载进来,并对module对象集合进行迭代,执行接口方法 Init(HttpApplication对象)
    context_AuthenticateRequest////2.授权验证请求,获取用户授权信息
    context_PostAuthenticateRequest////3.获取成功
    context_AuthorizeRequest////4.授权,一般来检查用户是否获取权限
    context_PostAuthorizeRequest////5.获得请求
    context_ResolveRequestCache////6.获取页面缓存结果
    context_PostResolveRequestCache////7.已获取缓存    当前请求映射到MvcHandler
    context_PostMapRequestHandler////8.创建页面对象:创建最终处理当前http请求的handler实例
    Session_Start//执行Session
    context_AcquireRequestState////9.获取Session
    context_PostAcquireRequestState////10.获得Session
    context_PreRequestHandlerExecute////11.准备执行处理程序,在这之前所有实现IHttpHandler的*.cs,将通过反射加载进来
    MyHandler//执行处理程序, 并且开始进入页面生命周期,对handler对象集合进行迭代,执行接口方法 ProcessRequest(HttpContext对象)
    context_PostRequestHandlerExecute ////12.已经执行了处理程序
    context_ReleaseRequestState////13.释放请求的状态
    context_PostReleaseRequestState////14.已经释放了请求状态
    context_UpdateRequestCache////15.更新缓存
    context_PostUpdateRequestCache////16.已经更新了缓存
     
    context_LogRequest////17.请求的日志操作
    context_PostLogRequest;////18.已经完成了请求的日志操作
     
    context_EndRequest////19.本次请求处理完成,httpModule 结束
     
    
    context_PreSendRequestHeaders////20.准备向客户端发送请求头数据
    context_PreSendRequestContent////21.准备向客户端发送请求体数据
  • 相关阅读:
    hdu 3342 Legal or Not 拓排序
    hdu 1596 find the safest road Dijkstra
    hdu 1874 畅通工程续 Dijkstra
    poj 2676 sudoku dfs
    poj 2251 BFS
    poj Prime Path BFS
    poj 3278 BFS
    poj 2387 Dijkstra 模板
    poj 3083 DFS 和BFS
    poj 1062 昂贵的聘礼 dijkstra
  • 原文地址:https://www.cnblogs.com/jameslif/p/5057765.html
Copyright © 2011-2022 走看看