首页 > 代码库 > ASP.NET与IIS
ASP.NET与IIS
本文所有请求都是针对asp.net
IIS5.0请求处理过程:
一个*.aspx请求首先要到达IIS(inetinfo.exe),IIS根据"处理程序映射"中的配置,找到对应的处理请求处理程序,也就是 aspnet_isapi.dll,然后该请求处理程序创建aspnet_wp这个工作进程,进程的初始化过程中加载CLR。
注意:①同一个服务器上只能运行一个aspnet_wp进程,如果该服务器有多个ASP.NET Web Application,则进程中会包含多个 AppDomain,AppDomain是相互隔离的。也就是说ASP.NET是基于AppDomain存在的。 ②ASP.NET ISAPI不但负责创建aspnet_wp,同时监测其性能,一旦性能低下,会杀掉该进程从新创建。 ③由于IIS(inetinfo.exe)同asp.net处理程序(aspnet_wp.exe)位于两个进程中,所以为了性能,他们之间的通信是基于 Named Pipe,所以驻留在IIS中的aspnet_isapi就是通过其中的Pipe与aspnet_wp中的应用程序通信的。需要注意的是, aspnet_isapi通过异步的方式将Request传到aspnet_wp,而aspnet_wp通过同步的方式向aspnet_isapi请求服务器信息
思考 ①自己是否可以写一个ISAPI放到IIS中? ②Named Pipe是什么?
IIS6.0请求处理过程:
一个*.aspx请求首先要达到IIS(inetinfo.exe),IIS里Http.sys负责接收请求,然后根据IIS中的Metabase查看该请求的Application 属于哪个Application Pool,不存在则创建,然后将请求加到Application Pool Queue中。每个Application Pool又对应着一个w3wp.exe ,每个w3wp.exe初始化时加载ASP.NET IASPI,ASP.NET IASPI进而加载CLR.
IIS7.0请求处理过程: 尚不清楚
ASP.NET与IIS