知识大全 ASP.NET内部原理

Posted 文件

篇首语:人起心发,树起根发。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET内部原理相关的知识,希望对你有一定的参考价值。

ASP.NET内部原理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在以前的ASP时候 当请求一个* asp页面文件的时候 这个HTTP请求首先会被一个名为inetinfo exe进程所截获 这个进程实际上就是服务 截获之后它会将这个请求转交给asp dll进程 这个进程就会解释这个asp页面 然后将解释后的数据流返回给客户端浏览器 其实ASP DLL是一个依附在IIS的ISAPI文件 它负责了对诸如ASP文件 ASA等文件的解释执行

  -------------------------------------

  ASP NET的HTTP请求处理方法

  当客户端向web服务器请求一个* aspx的页面文件时 同asp类似 这个请求也会被inetinfo exe进程截获(服务) 它判断文件后缀之后 把这个请求转交给ASPNET_ISAPI DLL而ASPNET_ISAPI DLL则会通过一个Http PipeLine的管道 将这个请求发送给ASPNET_WP EXE进程 当这个HTTP请求进入ASPNET_WP EXE进程之后 framework就会通过HttpRuntime来处理这个Http请求 处理完毕后将结果返回给客户端

  ------------------------------------

  当一个请求被送入到HttpRuntime之后 这个Http请求会继续被送入到一个被称之为HttpApplication Factory的一个容器当中 而这个容器会给出一个HttpApplication实例来处理传递进来的请求 而后这个Http请求会依次进入到如下几个容器中

  当系统内部的HttpHandler的ProcessRequest方法处理完毕之后 整个Http Request就被处理完成了 客户端也就得到相应的东东了

  完整的请求在 framework中的处理流程

  如果想在中途截获一个Request并做些自己的处理 就应该在HttpRuntime运行时内部来做到这一点 确切的说时在HttpModule这个容器中做到这个的

  ----------------------------------------

  系统本身的HttpModule实现一个IHttpModule的接口 当然我们自己的类也能够实现IHttpModule接口 这就可以替代系统的HttpModule对象了

  系统中默认的HttpModule

  DefaultAuthenticationModule 确保上下文中存在 Authentication 对象 无法继承此类

  FileAuthorizationModule 验证远程用户是否具有访问所请求文件的 NT 权限 无法继承此类

  FormsAuthenticationModule 启用 ASP NET 应用程序以使用 Forms 身份验证 无法继承此类

  PassportAuthenticationModule 提供环绕 PassportAuthentication 服务的包装 无法继承此类

  SessionStateModule   为应用程序提供会话状态服务

  UrlAuthorizationModule   提供基于 URL 的授权服务以允许或拒绝对指定资源的访问 无法继承此类

  WindowsAuthenticationModule 启用 ASP NET 应用程序以使用 Windows/IIS 身份验证 无法继承此类

  --------------------------------------

  这些系统默认的HttpModule是在文件nfig中配置的 和我们开发时使用到的nfig的关系是 是在ASP NET FRAMEWORK启动处理一个Http Request的时候 它会依次加载nfig和请求页面所在目录的nfig文件 如果在machine中配置了一个自己的HttpModule 你仍然可以在所在页面的nfig文件中remove掉这个映射关系

  深入HttpModule

  public class HelloWorldModule : IHttpModule    public HelloWorldModule()            public String ModuleName            get  return  HelloWorldModule ;         // In the Init function  register for HttpApplication     // events by adding your handlers     public void Init(HttpApplication application)            application BeginRequest +=             (new EventHandler(this Application_BeginRequest));        application EndRequest +=             (new EventHandler(this Application_EndRequest));        private void Application_BeginRequest(Object source           EventArgs e)        // Create HttpApplication and HttpContext objects to access    // request and response properties         HttpApplication application = (HttpApplication)source;        HttpContext context = application Context;        context Response Write(

 HelloWorldModule: Beginning of Request


   );        private void Application_EndRequest(Object source  EventArgs e)            HttpApplication application = (HttpApplication)source;        HttpContext context = application Context;        context Response Write(


HelloWorldModule: End of Request

   );        public void Dispose()        

  一个Http请求在被ASP NET Framework捕获之后会依次交给HttpModule以及HttpHandler来处理 hm与hh之间不是完全独立的 实际上 请求在hm传递的过程中会在某个事件内将控制权转交给hh的 而真正的处理在HttpHandler中执行完成后 HttpHandler会再次将控制权交还给hh的 而真正的处理在HttpHandler中执行完成后 HttpHandler会再次将控制权交还给HttpModule  上面的代码中的HttpModule的Init()中的参数是HttpApplication类型 它具有许多事件 包括BeginRequest EndRequest AuthentiacteRequest 等等 IHttpHandler

  它是 Framework提供的一个接口 定义了如果要实现一个Http请求的处理所需要必须实现的一些系统约定 也就是说 如果你想要自行处理某些类型的HTTP请求信息流的话 你需要实现这些系统约定才能做到 譬如一个* aspx文件 用来处理此类型的Http请求 ASP NET FRAMEWORK将会交给一个名为System Web UI PageHandlerFactory的HttpHandler类来处理

  HH和HM一样 系统会在最初始由ASP NET FRAMEWORK首先加载nfig中的HttpHandler 而后会加载Web应用程序所在目录的nfig中的用户自定义的HttpHandler类 但是系统与我们自定义的HH之间的关系是 覆蓋 的 也就是说如果我们自定义了一个针对 * aspx 的HttpHandler类的话 那么系统会将对此请求的处理权完全交给我们自己定义的这个HttpHandler类来处理 而我们自己的HttpHandler类则需要自己完全解析这个Http请求 并作出处理

  接口中最重要的方法ProcessRequest 这个方法就是HttpHandler用来处理一个Http请求 当一个Http请求经过由HttpModule容器传递到HttpHandler容器中的时候 framework会调用HttpHandler的ProcessRequest方法来做对这个Http请求做真正的处理

cha138/Article/program/net/201311/12413

相关参考

知识大全 浅谈ASP.NET的内部机制(一)

浅谈ASP.NET的内部机制(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  前言当一个Ht

知识大全 浅谈ASP.NET的内部机制(二)

浅谈ASP.NET的内部机制(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  上次已经说到了

知识大全 ASP.NET内部机制实现计划任务代码

ASP.NET内部机制实现计划任务代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNE

知识大全 asp.net利用listbox查看内部列

   protectedvoidListBox_SelectedIndexChanged(objectsenderEventArgse)   

知识大全 ASP.NET运行原理

ASP.NET开发宝典:ASP.NET运行原理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &

知识大全 asp.net运行原理详解

cha138/Article/program/net/201311/14192

知识大全 ASP.NET 2.0异步页面原理浅析

ASP.NET2.0异步页面原理浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  与ASPNE

知识大全 跳出封装剖析ASP.NET脚本回调的原理

跳出封装剖析ASP.NET脚本回调的原理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 ASP.NET1.1验证码产生的原理及应用

ASP.NET1.1验证码产生的原理及应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASP

知识大全 ASP.NET生成静态页面和分页主要的原理

ASP.NET生成静态页面和分页主要的原理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  静态模