雖然 IIS 7 Web 服務器核心中的整合式要求處理管線可讓原生程式碼開發人員以 C++ 撰寫 HTTP 模組,但原生程式碼和 Managed 程式碼開發人員可用的事件通知並不相同。 將 HTTP 模組從 C# 等 Managed 語言移轉至機器碼的開發人員,在建立新模組時必須解決這些差異。
全域通知
使用 IIS 7,開發人員現在可以建立原生程式碼 HTTP 模組,以處理全域層級的通知。 在舊版 IIS 中,開發人員可以建立 HTTP 模組,只處理要求層級的通知。 處理全域層級通知的 HTTP 模組可用來處理各種伺服器層級事件的通知。
下表列出原生程式碼開發人員可用的全域通知方法。
| 事件通知方法 | 描述 |
|---|---|
| OnGlobalApplicationResolveModules | 當 IIS 解析已註冊的模組時呼叫。 |
| OnGlobalApplicationStart | 在 IIS 啟動應用程式時呼叫。 |
| OnGlobalApplicationStop | 當 IIS 結束應用程式時呼叫。 |
| OnGlobalCacheCleanup | IIS 清除快取時呼叫。 |
| OnGlobalCacheOperation | IIS 執行快取相關作業時呼叫。 |
| OnGlobalConfigurationChange | 對組態檔進行變更時呼叫。 |
| OnGlobalCustomNotification | 當模組引發使用者定義的通知時呼叫。 |
| OnGlobalFileChange | 在網站內的檔案變更時呼叫。 |
| OnGlobalHealthCheck | 執行健康情況相關作業時呼叫。 |
| OnGlobalPreBeginRequest | 在要求進入整合式要求處理管線之前呼叫。 |
| OnGlobalRSCAQuery | 執行Run-Time狀態和控制項查詢時呼叫。 |
| OnGlobalStopListening | 當 IIS 停止接受新要求時呼叫。 |
| OnGlobalThreadCleanup | 當 IIS 將執行緒傳回至執行緒集區時呼叫。 |
| OnGlobalTraceEvent | 引發追蹤事件時呼叫。 |
比較要求通知
雖然原生程式碼和 Managed 程式碼 HTTP 模組的要求通知方法在許多方面都類似,但它們並不完全類似。 例如,原生程式碼和 Managed 程式碼模組的確定性要求通知方法清單幾乎完全相同,但非決定性要求通知方法的清單有很大的差異。
Native-Code決定性要求通知
下表列出原生程式碼開發人員可用的決定性要求通知方法。
| 事件通知方法 | 事件後通知方法 |
|---|---|
| OnBeginRequest | OnPostBeginRequest |
| OnAuthenticateRequest | OnPostAuthenticateRequest |
| OnAuthorizeRequest | OnPostAuthorizeRequest |
| OnResolveRequestCache | OnPostResolveRequestCache |
| OnMapRequestHandler | OnPostMapRequestHandler |
| OnAcquireRequestState | OnPostAcquireRequestState |
| OnPreExecuteRequestHandler | OnPostPreExecuteRequestHandler |
| OnExecuteRequestHandler | OnPostExecuteRequestHandler |
| OnReleaseRequestState | OnPostReleaseRequestState |
| OnUpdateRequestCache | OnPostUpdateRequestCache |
| OnLogRequest | OnPostLogRequest |
| OnEndRequest | OnPostEndRequest |
Managed-Code決定性要求通知
下表列出 Managed 程式碼開發人員可用的決定性要求通知方法。
| 事件通知方法 | 事件後通知方法 |
|---|---|
| BeginRequest | (無) |
| AuthenticateRequest | PostAuthenticateRequest |
| AuthorizeRequest | PostAuthorizeRequest |
| ResolveRequestCache | PostResolveRequestCache |
| MapRequestHandler | PostMapRequestHandler |
| AcquireRequestState | PostAcquireRequestState |
| PreRequestHandlerExecute | (無) |
| RequestHandlerExecute | PostRequestHandlerExecute |
| ReleaseRequestState | PostReleaseRequestState |
| UpdateRequestCache | PostUpdateRequestCache |
| LogRequest | PostLogRequest |
| EndRequest | (無) |
Native-Code非決定性的要求通知
下表列出原生程式碼開發人員可用的非決定性要求通知方法。
| 事件通知方法 | 事件後通知方法 |
|---|---|
| OnAsyncCompletion | (無) |
| OnCustomRequestNotification | (無) |
| OnMapPath | (無) |
| OnReadEntity | (無) |
| OnSendResponse | (無) |
Managed-Code非決定性的要求通知
下表列出 Managed 程式碼開發人員可用的非決定性要求通知方法。
| 事件通知方法 | 事件後通知方法 |
|---|---|
| PreSendRequestHeaders | (無) |
| PreSendRequestContent | (無) |