当用户在浏览器输入一个URL地址后,浏览器会发送一个请求到服务器。这时候在服务器上第一个负责处理请求的是IIS。然后IIS再根据请求的URL扩展名将请求分发给不同的ISAPI处理。
流程如下:
1、IIS => aspnet_isapi阶段
ISAPI是一个底层的WIN32 API,开发者可以使用这些接口深入到IIS,让IIS支持各种其他处理程序。ISAPI是一个桥接口,通常用于高层次的工具与IIS之间的接驳。例如Windows下的Apache与Tomcat就是构建于ISAPI之上。ISAPI是自定义Web请求处理中第一个IIS入口点。
在上述步骤中,对于html页面,txt文件,jpeg和gif图像的请求,IIS就自己处理了,当发现请求是Asp.net的资源时(如*.aspx,*.asmx,*.ashx),请求将传递到ASP.NET ISAPI扩展aspnet_isapi.dll。
aspnet_isapi.dll可以处理多种资源类型,包括Web服务和HTTP处理程序调用等。
如IIS7中的处理程序映射:
以上映射的意思是,将.aspx扩展名的路径传递给aspnet_isapi.dll处理程序处理。
2、aspnet_isapi => 辅助进程
辅助进程在(IIS5里是aspnet_wp.exe;IIS6里是w3wp.exe)。
aspnet_isapi与辅助进程的通信:
IIS与aspnet_isapi的处理逻辑:
3、Asp.net运行时环境:
构成Asp.net运行时环境的可执行文件如下:
名称 | 类型 | 账户 |
aspnet_isapi.dll | Win32 DLL | LOCAL SYSTEM |
aspnet_wp.exe | Win32 EXE | ASPNET |
aspnet_filter.dll | Win32 DLL | LOCAL SYSTEM |
aspnet_state.exe | Win32 EXE | ASPNET |
aspnet_filter.dll组件是一个小的Win32 ISAPI筛选器,用来备份ASP.NET应用程序的无Cookie会话状态。
aspnet_state.ext的作用对Web应用程序更为重要,因为它用于管理会话状态。
好了,到目前为止,IIS就已经将请求转交到了辅助进程,而这个辅助进程实际上就是Asp.net的开始标志,我们平时所说的Asp.net开发就是从这个地方开始。
HTTP -> Asp.net (第一篇),布布扣,bubuko.com
原文地址:http://www.cnblogs.com/mingxuantongxue/p/3822506.html