zoukankan      html  css  js  c++  java
  • HttpRuntime的认识与加深理解

    HttpRuntime的认识与加深理解

    下面最先介绍HttpRuntime的Web.config里的配置

    <httpRuntime
       executionTimeout = "number" 
       maxRequestLength = "number" 
       requestLengthDiskThreshold = "number" 
       useFullyQualifiedRedirectUrl = "[True|False]" 
       minFreeThreads = "number" 
       minLocalRequestFreeThreads = "number" 
       appRequestQueueLimit = "number"
       enableKernelOutputCache = "[True|False]" 
       enableVersionHeader = "[True|False]" 
       apartmentThreading = "[True|False]"
       requireRootedSaveAsPath = "[True|False]"
       enable = "[True|False]" 
       sendCacheControlHeader = "[True|False]" 
       shutdownTimeout = "number"
       delayNotificationTimeout = "number"
       waitChangeNotification = "number" 
       maxWaitChangeNotification = "number" 
       enableHeaderChecking = "[True|False]" 
    />

    通过上面的配置说明, 下面是在Web.Config里节点的设置

    <configuration>
      <system.web>
      <httpRuntime maxRequestLength="4000"
        enable = "True"
        requestLengthDiskThreshold="512
        useFullyQualifiedRedirectUrl="True"
        executionTimeout="45"
        versionHeader="1.1.4128"/>
      </system.web>
    </configuration>

    IIS 所收到的对某 Microsoft ASP.NET 页面的每个请求都被移交给 ASP.NET HTTP 管线。HTTP 管线由一系列托管对象组成,这些对象按顺序处理该请求,并完成从 URL 到普通 HTML 文本的转换。HTTP 管线的入口点是 HttpRuntime 类。ASP.NET 基础结构为辅助进程中所承载的每个 AppDomain 创建此类的一个实例请注意,该辅助进程为当前正在运行的每个 ASP.NET 应用程序维护一个不同的 AppDomain。

    要激活 HTTP 管道,可以创建一个 HttpRuntime 类的新实例,然后调用其 ProcessRequest 方法。一个完整的页面请求会包括下面的流程:
    首先被WWW服务器截获(inetinfo.exe进程), 该进程首先判断页面后缀, 然后根据IIS中配置决定调用具体的扩展程序。aspx就会调用aspnet_isapi.dll,
    然后由aspnet_isapi.dll发送给w3wp.exe(iis 工作者进程,IIS6.0中叫做 w3wq.exe,IIS5.0中叫做 aspnet_wp.exe)。

    接下来在w3wp.exe调用.NET类库进行具体处理,顺序如下:ISAPIRuntim, HttpRuntime, HttpApplicationFactory, HttpApplication, HttpModule, HttpHandlerFactory, HttpHandler

    ISAPIRuntime:主要作用是调用一些非托管代码生成HttpWorkerRequest对象,HttpWorkerRequest对象包含当前请求的所有信息,然后传递给HttpRuntime
    HttpRuntime:根据HttpWorkerRequest对象生成HttpContext,HttpContext包含request、response等属性, 再调用HttpApplicationFactory来生成IHttpHandler, 调用HttpApplication对象执行请求
    HttpApplicationFactory: 生成一个HttpApplication对象
    HttpApplication:进行HttpModule的初始化,HttpApplication创建针对此Http请求的 HttpContext对象
    HttpModule: 当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于HTTP请求来讲,HttpModule是一个HTTP请求的“必经之路”,所以可以在这个HTTP请求传递到真正的请求处理中心(HttpHandler)之前附加一些需要的信息在这个HTTP请求信息之上,或者针对截获的这个HTTP请求信息作一些额外的工作,或者在某些情况下干脆终止满足一些条件的HTTP请求,从而可以起到一个Filter过滤器的作用。
    HttpHandlerFactory:把用户request 转发到HttpHandlerFactory,再由HttpHandlerFactory实例化HttpHandler对象来相应request
    HttpHandle:Http处理程序,处理页面请求 

  • 相关阅读:
    复制带有random指针的单链表
    loadrunner常见问题
    【转】性能测试、负载测试、压力测试的区别
    文件存储结构inode与RAM结构建立联系
    inode表元数据,存储在物理存储体上
    debug宏起作用应用
    linux内核常用函数或宏
    file、inode在应用层和驱动层之间的联系_转
    内核交互--sysfs
    内核交互--procfs
  • 原文地址:https://www.cnblogs.com/chucklu/p/13332655.html
Copyright © 2011-2022 走看看