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处理程序,处理页面请求 

  • 相关阅读:
    如何回答十个最棘手的面试问题(下)
    数据库设计三大范式应用实例剖析
    也谈内置无线网卡
    用10个漂亮问题完美结束面试
    Visual C++6.0编译器报错fatal error C1083
    MSDN library下载地址
    如何回答十个最棘手的面试问题(上)
    个人计划永不乱:五款定时提醒软件横评
    怎样使用C#调用exe的应用程序
    组策略妙用通过组策略禁止域用户更改IP地址
  • 原文地址:https://www.cnblogs.com/chucklu/p/13332655.html
Copyright © 2011-2022 走看看