2007年10月11日 星期四

IIS Worker Process

當IIS在處理每一個網頁頁面的時候,他的處理流程如右圖所示。

每一個頁面,會先經過 http.sys進行第一次的驗證。他針對每一個URL的請求,進行長度檢查,判斷是否有超過 16KB。16KB換算成字元數,是260個字元,也就是說,當你URL裡頭,有一個路徑是超過260個字元,則就會發出 414 的錯誤訊息。

HTTP Error 414 - Request URI too long

實際上,經過個人親自在 winXP、IIS 5.1與ASP.Net 2.0上測試,當超過260個字元時,出現的錯誤為 400

HTTP / 1.1 400 - 錯誤的要求時發生錯誤

這現象,是因為我並非在 windows2003 搭配 IIS6 的環境上所造成的差異。而右圖所提到的 w3wp.exe,也是要在 window2003上,才會有這個執行檔。

另外,如果想要觀察你的 WEB 站台處理了哪些URL請求,可以到 WEB站台的 %windir%\system32\LogFiles\W3SVC1 目錄下,找到所有的URL請求資料。

Http.sys他只會針對 URL 與 header 進行檢查,至於 Content 的檢查,則是交由ASP.Net去負責。

ISAPI(Internet Server Application Programming Interface)
ISAPI可執行文件分為兩類:擴展(Extensions)與篩選器(Filters)。
擴展的用法,是指可以透過像 http://localhost/myisapi.dll 這種方式來呼叫IIS所提供的功能來使用。
篩選器,則是能夠用來修改傳入與傳出的資料流。所以可以用來實作出自行定義的日誌記錄檔、身份驗證、也可以用來修改資料流。

沒有留言:

張貼留言