`

剖析aspx请求的处理过程

阅读更多

1、客户在浏览器中输入login.aspx
2、把信息(info)提交到IIs
3、IIS初始化ASPNET_ISAPI.DLL并把info传给ASPnet_ISAPI的实例
4、ASPNET_ISAPI实例启动一个Asp.net工作进程(ASPNET_WP.exe),并把info传给aspnet_wp.exe
5、aspnet_wp.exe创建一个APPDOMAIN(.net程序的执行环境),并加载所需要的Assembly到APPDOMAIN中
   同时创建ISAPIRuntime(负责解析出info信息然后传给IHttpRuntime对象)和IHttpRuntime对象
6、HTTPRuntime对象为每个请求者创建一个httpcontent(负责管理httpSession)、httpSession、httpApplication对象
7、httpApplication对象根据<machine.config>的<httphandler>节找到真正的处理请求的对象
   Login类
8、httpruntime调用Login的ProcessRequest()方法
伪代码如下:
 /// <summary>
 /// 模拟asp.net的处理过程,以下代码全部是根据自己的理解写的
 /// 帮助理解处理aspx请求的生命周期的伪代码,没有任何依据,给读者
 /// 造成的误导不负任何责任
 /// </summary>
 public class HttpRuntime
 {
  public HttpRuntime(string info)
  {
   HttpContent content=new HttpContent();//每一个请求一个HttpContent
   content.Session=new HttpSession();//HttpContent负责管理HttpSession

   HttpApplication app=new HttpApplication();
   HttpHandler handler=app.GetHandler(info);
   //负责根据请求的Info找到真正的处理请求的HttpHandler类,在.net中所有的
   //Web窗体都是从Page继承,page继承了HttpHandler接口

   handler.ProcessRequest();//真正的HttpHandler处理请求
  }
 }

 public class HttpContent
 {
  public HttpSession Session;
  public HttpContent()
  {
  }
 }
 public class HttpSession
 {
  public HttpSession()
  {
  }
 }

 public class HttpApplication
 {
  public HttpApplication()
  {
  }
  public HttpHandler GetHandler(string classname)
  {
   //根据动态特指等方法得到真实的HttpHandler的子类
   return null;
  }
 }


 public interface HttpHandler
 {
  void ProcessRequest();
 }

 public class Login:HttpHandler 
 {
  public Login()
  {
  }

  // HttpHandler 成员
  public void ProcessRequest()
  {
   // TODO:  添加 Login.ProcessRequest 实现
   OnInit();
   LoadViewState();
   OnLoad();
   OnPreRender();
   SaveViewState();
   Render();
   OnUnload();
   Dispose();
  }
  public void OnInit()
  {
  }
  public void LoadViewState()
  {
  }
  public void OnLoad()
  {
  }
  public void OnPreRender()
  {
  }
  public void SaveViewState()
  {
  }
  public void Render()
  {
  }
  public void OnUnload()
  {
  }
  public void Dispose()
  {
  }
 }

分享到:
评论

相关推荐

    深入解析ASP.NET架构

    在这个过程中,核心组件`aspnet_isapi.dll`扮演着桥梁角色,连接IIS与CLR,使ASP.NET能够高效处理请求。 ### HttpModule与HttpHandler #### HttpModule HttpModule是ASP.NET架构中的关键组件,用于扩展请求处理...

    深入剖析ASP.NET的编译原理.

    例如,修改aspx后,新的请求会触发编译,但之前的请求仍使用旧的Assembly。 5. **临时目录**:编译生成的文件存放在`Windows Directory\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files`这样的临时目录...

    深入剖析ASP.NET的编译原理

    2. **编译过程**:编译器首先解析这些文件,提取出服务器端代码,并将它们与页面指令(Page Directives)、控件属性和事件处理程序连接起来。然后,编译器生成对应的类,这些类继承自System.Web.UI.Page或System.Web...

    ASp.net 剖析三层架构

    在本示例中,`User.aspx` 是用户看到的网页,`User.aspx.cs` 是处理用户请求的后台代码。尽管`User.aspx.cs`有时会涉及一些业务逻辑,但在三层架构中,它的主要任务是接收用户输入,调用BLL进行处理,并将结果显示在...

    ASP.NET与Web Service实例剖析中文版.ppt

    当用户向服务器发送请求(例如mypage.aspx)时,Web服务器上的xspisapi.dll模块负责处理请求。这个模块会将.aspx页面转换为源代码文件,然后编译这些源代码并将结果存储在codegen目录下。接着,xspisapi.dll创建一个...

    剖析开源工作流CCFOLW

    4. **处理程序**:`SaveFocusFieldHandler.ashx`和`SaveFocusFieldHandler.ashx.cs`是HTTP处理程序,它们负责接收和处理来自用户的请求,例如保存工作流中的焦点字段或者执行某些操作。 5. **配置文件**:`Web....

    IHttpHandler介绍

    例如,`System.Web.UI.PageHandlerFactory`就是一个典型的`IHttpHandlerFactory`实现,用于处理`.aspx`文件请求。 ##### 1. 动态创建处理器实例 `IHttpHandlerFactory`接口提供了一个`GetHandler`方法,该方法接收...

    ASP.NET与Web Service实例剖析中文版

    当浏览器向服务器发送请求时,IIS调用ASP.NET ISAPI扩展(如xspisapi.dll)来处理请求。这个扩展会将.aspx文件转换为源代码,并编译成中间语言(IL),然后执行并生成HTML响应回送给浏览器。这种编译过程使得ASP.NET...

    深入剖析ASP.NET的编译原理.rar

    本资料“深入剖析ASP.NET的编译原理”将帮助我们理解这个框架背后的核心机制,特别是其编译过程。编译原理是任何编程语言或框架的基础,对于优化应用性能和解决调试问题至关重要。 首先,我们需要了解ASP.NET的两种...

    asp.net与webservice实例剖析

    1. **页面生命周期**:ASP.NET页面从请求到响应的过程包括初始化、加载、验证、呈现和卸载等阶段,开发者可以在这些阶段中插入代码以执行特定任务。 2. **控件模型**:ASP.NET提供了一整套服务器控件,如按钮、...

    Web程序设计课后习题整理剖析.pdf

    IIS通过IP地址和端口号来识别和响应HTTP请求。例如,IP地址为210.78.60.19,网站端口号为8000的IIS服务器,访问虚拟目录xxxy中的default.aspx页面的URL为http://210.78.60.19:8000/xxxy/default.aspx。 4. 托管代码...

    MyBlog1.1.rar

    `Manager.aspx`和`linkManage.aspx`可能是管理员界面,用于管理博客的日常运营,如管理文章、处理链接请求等。这些页面可能需要权限控制,利用ASP.NET的身份验证和授权机制来确保只有授权用户才能访问。 `comment....

    asp.net 本质论

    ASP.NET框架解析请求,根据URL路由规则找到对应的处理程序,如ASPX页面或Web API控制器。在这个过程中,ASP.NET会处理身份验证、授权、状态管理等HTTP相关的任务。 接着,书中可能会深入讨论ASP.NET的事件模型。在...

    .net小项目:留言板!

    - 后台代码通常使用C#编写,处理HTTP请求,实现业务逻辑。 - 使用ASP.NET的Page生命周期方法,如`Page_Load`,在页面加载时执行特定操作。 - 数据绑定技术,如`Repeater`或`GridView`,用于动态展示数据库中的...

    jQuery Ajax 全解析.

    本文将深入剖析 jQuery 中的 Ajax 方法及其应用场景,帮助开发者更好地理解和运用这些功能。 #### 二、jQuery Ajax 基础概念 **1. AJAX**(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况...

    Request和Response.txt

    `Request`与`Response`对象是Web开发中的重要组成部分,它们使得服务器能够理解客户端的请求,并做出相应的处理和反馈。熟练掌握这两个对象的使用对于编写高效、健壮的Web应用程序至关重要。通过对以上内容的学习,...

    Asp.net页面之间传递参数的几种方法

    在发送页面`send.aspx`创建一个表单,并设置`action`属性指向接收页面`receive.aspx`,通过`method="post"`指定表单提交方式为POST,这样可以将表单中的数据以HTTP POST请求的形式发送到服务器: ```html ...

    SodaProject:Soda项目。 主文件是Home.aspx

    例如,在Home.aspx上,用户点击按钮、滚动页面、填写表单等行为,都可以触发JavaScript函数,执行相应的逻辑处理,如数据验证、提交请求或者更新界面。这种实时反馈增强了用户体验,使网页更加互动和友好。 再者,...

    一个完整的网上商城的源码

    5. 支付模块:与第三方支付平台的接口对接,处理支付请求和回调,确保交易安全。 三、技术选型与框架 网上商城通常采用前后端分离的开发模式,前端可能使用React、Vue等现代化的JavaScript框架,后端则可能基于.NET...

Global site tag (gtag.js) - Google Analytics