3.《简单流程图》


4.这个就是处理 【托管程序】的入口方法了
1 [SecurityPermission(SecurityAction.LinkDemand, Unrestricted=true)]
2 public int ProcessRequest(IntPtr ecb, int iWRType){
3 IntPtr zero = IntPtr.Zero;
4 if ( iWRType == 2 ){zero = ecb;ecb = UnsafeNativeMethods.GetEcb(zero);}
5 ISAPIWorkerRequest wr = null; //ISAPIWorkerRequest : HttpWorkerRequest
6 try{
7 bool useOOP = iWRType == 1;
8 wr = ISAPIWorkerRequest.CreateWorkerRequest(ecb, useOOP);//将 ecb 句柄封装成 HttpWorkerRequest 的 源码在此 !!!
9 wr.Initialize();
10 string appPathTranslated = wr.GetAppPathTranslated();
11 string appDomainAppPathInternal = HttpRuntime.AppDomainAppPathInternal;
12
13 if ((appDomainAppPathInternal == null) || StringUtil.EqualsIgnoreCase(appPathTranslated, appDomainAppPathInternal))
14 {
15 HttpRuntime.ProcessRequestNoDemand(wr);
16 return 0;
17 }
18
19 object[] args = new object[] { appDomainAppPathInternal, appPathTranslated };
20 HttpRuntime.ShutdownAppDomain(ApplicationShutdownReason.PhysicalApplicationPathChanged, SR.GetString("Hosting_Phys_Path_Changed", args));
21 return 1;
22 }catch (Exception exception){
23 try{ WebBaseEvent.RaiseRuntimeError(exception, this); }catch{}
24 if ( (wr == null) || !(wr.Ecb == IntPtr.Zero) ){throw;}
25 if ( zero != IntPtr.Zero ){UnsafeNativeMethods.SetDoneWithSessionCalled(zero);}
26 if ( exception is ThreadAbortException ){Thread.ResetAbort();}
27 return 0;
28 }
29 }
5.aspx页面的执行过程,可以在页面加入<%@ Page Language="C#" Trace="true" %> aspx页面执行流程会在浏览器中显示
