共用方式為


比較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 (無)

另請參閱

建立 Native-Code HTTP 模組
設計Native-Code HTTP 模組