比較Native-Code和Managed-Code通知
雖然 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 | (無) |