使用 Reflector 反編譯 System.Web,追蹤 IHttpModule.Init 呼叫鏈,最終定位至 HttpApplicationFactory.GetNormalApplicationInstance,可見 HttpApplication 實例池的建立與重用邏輯。

IHttpModule.Init 不能 直接替代 Application_Start,因平行請求會建立多個 HttpApplication 實例,每個實例都會建立模組並呼叫 Init。
Init 內完成一次性初始化後設 static bool initialized = true,後續呼叫直接返回。context.BeginRequest += ...,因每個 HttpApplication 實例擁有獨立事件鏈,若用旗標跳過會導致 URL Rewrite 等功能間歇失效。區分「應用程式級初始化」與「請求處理管線註冊」是關鍵。