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()
{
}
}
分享到:
相关推荐
在这个过程中,核心组件`aspnet_isapi.dll`扮演着桥梁角色,连接IIS与CLR,使ASP.NET能够高效处理请求。 ### HttpModule与HttpHandler #### HttpModule HttpModule是ASP.NET架构中的关键组件,用于扩展请求处理...
例如,修改aspx后,新的请求会触发编译,但之前的请求仍使用旧的Assembly。 5. **临时目录**:编译生成的文件存放在`Windows Directory\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files`这样的临时目录...
2. **编译过程**:编译器首先解析这些文件,提取出服务器端代码,并将它们与页面指令(Page Directives)、控件属性和事件处理程序连接起来。然后,编译器生成对应的类,这些类继承自System.Web.UI.Page或System.Web...
在本示例中,`User.aspx` 是用户看到的网页,`User.aspx.cs` 是处理用户请求的后台代码。尽管`User.aspx.cs`有时会涉及一些业务逻辑,但在三层架构中,它的主要任务是接收用户输入,调用BLL进行处理,并将结果显示在...
当用户向服务器发送请求(例如mypage.aspx)时,Web服务器上的xspisapi.dll模块负责处理请求。这个模块会将.aspx页面转换为源代码文件,然后编译这些源代码并将结果存储在codegen目录下。接着,xspisapi.dll创建一个...
4. **处理程序**:`SaveFocusFieldHandler.ashx`和`SaveFocusFieldHandler.ashx.cs`是HTTP处理程序,它们负责接收和处理来自用户的请求,例如保存工作流中的焦点字段或者执行某些操作。 5. **配置文件**:`Web....
例如,`System.Web.UI.PageHandlerFactory`就是一个典型的`IHttpHandlerFactory`实现,用于处理`.aspx`文件请求。 ##### 1. 动态创建处理器实例 `IHttpHandlerFactory`接口提供了一个`GetHandler`方法,该方法接收...
当浏览器向服务器发送请求时,IIS调用ASP.NET ISAPI扩展(如xspisapi.dll)来处理请求。这个扩展会将.aspx文件转换为源代码,并编译成中间语言(IL),然后执行并生成HTML响应回送给浏览器。这种编译过程使得ASP.NET...
本资料“深入剖析ASP.NET的编译原理”将帮助我们理解这个框架背后的核心机制,特别是其编译过程。编译原理是任何编程语言或框架的基础,对于优化应用性能和解决调试问题至关重要。 首先,我们需要了解ASP.NET的两种...
1. **页面生命周期**:ASP.NET页面从请求到响应的过程包括初始化、加载、验证、呈现和卸载等阶段,开发者可以在这些阶段中插入代码以执行特定任务。 2. **控件模型**:ASP.NET提供了一整套服务器控件,如按钮、...
IIS通过IP地址和端口号来识别和响应HTTP请求。例如,IP地址为210.78.60.19,网站端口号为8000的IIS服务器,访问虚拟目录xxxy中的default.aspx页面的URL为http://210.78.60.19:8000/xxxy/default.aspx。 4. 托管代码...
`Manager.aspx`和`linkManage.aspx`可能是管理员界面,用于管理博客的日常运营,如管理文章、处理链接请求等。这些页面可能需要权限控制,利用ASP.NET的身份验证和授权机制来确保只有授权用户才能访问。 `comment....
ASP.NET框架解析请求,根据URL路由规则找到对应的处理程序,如ASPX页面或Web API控制器。在这个过程中,ASP.NET会处理身份验证、授权、状态管理等HTTP相关的任务。 接着,书中可能会深入讨论ASP.NET的事件模型。在...
- 后台代码通常使用C#编写,处理HTTP请求,实现业务逻辑。 - 使用ASP.NET的Page生命周期方法,如`Page_Load`,在页面加载时执行特定操作。 - 数据绑定技术,如`Repeater`或`GridView`,用于动态展示数据库中的...
本文将深入剖析 jQuery 中的 Ajax 方法及其应用场景,帮助开发者更好地理解和运用这些功能。 #### 二、jQuery Ajax 基础概念 **1. AJAX**(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况...
`Request`与`Response`对象是Web开发中的重要组成部分,它们使得服务器能够理解客户端的请求,并做出相应的处理和反馈。熟练掌握这两个对象的使用对于编写高效、健壮的Web应用程序至关重要。通过对以上内容的学习,...
在发送页面`send.aspx`创建一个表单,并设置`action`属性指向接收页面`receive.aspx`,通过`method="post"`指定表单提交方式为POST,这样可以将表单中的数据以HTTP POST请求的形式发送到服务器: ```html ...
例如,在Home.aspx上,用户点击按钮、滚动页面、填写表单等行为,都可以触发JavaScript函数,执行相应的逻辑处理,如数据验证、提交请求或者更新界面。这种实时反馈增强了用户体验,使网页更加互动和友好。 再者,...
5. 支付模块:与第三方支付平台的接口对接,处理支付请求和回调,确保交易安全。 三、技术选型与框架 网上商城通常采用前后端分离的开发模式,前端可能使用React、Vue等现代化的JavaScript框架,后端则可能基于.NET...