http請求的處理過程
iis是使用被請求的資源的副檔名來決定使用哪個isapi擴充套件來處理該請求的,所以如果需要讓某一副檔名的資源被asp.net處理,就需要在iis裡配置該副檔名與c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll進行對映,還包括請求的型別(get、post等)。
http請求會通過若干個httpmodules(其中乙個是sessionstatemodule,用於管理會話狀態)和乙個httphandler來處理,具體的httphandler可以在web.config裡配置,任何實現了ihttphandler介面的類都可以在web.config檔案裡配置為乙個httphandler來處理http請求,如果是用ashx檔案來實現則會自動配置,不需要在web.config裡進行配置。
ihttphandler介面有兩個成員:isreusable和processrequest()。
ihttphandle***ctory介面有兩個成員:gethandler()和releasehandler(),實現這個介面的類可以在web.config裡配置成httphandler工廠,把httprequest路由到合適的handler。
注意top-level items只會編譯一次,只有在它們依賴的東西如web.config發生了改變的時候才重新編譯。
被編譯的assembly會被cache在server,所以除了第一次請求會等較長的編譯時間外,以後的請求都會很快,當然也可以預編譯,讓第一次請求也很快。
1.iis是使用請求的副檔名來與isapi擴充套件進行對映的,這是可配置的。asp.net就是isapi extension的一種,能夠處理.aspx, .ascx, .ashx, and .asmx等。當需要某自定義副檔名的資源受asp.net處理的時候就要對映一下副檔名和aspnet_isapi.dll。
首先會validaterequest,看是否有potentially malicious markup。
最後執行下面的:
1.beginrequest
2.authenticaterequest - postauthenticaterequest
4.authorizerequest - postauthorizerequest
6.resolverequestcache - postresolverequestcache
然後根據配置檔案裡的副檔名與handler的對映來選擇乙個適合的handler,或者根據handle***ctory來選擇乙個合適的handler,去處理請求。如果請求的是乙個webpage,而該頁又需要被編譯,asp.net就會在生成這個頁的例項之前編譯這個頁。
8.postmaprequesthandler
9.acquirerequeststate - postacquirerequeststate
11.prerequesthandlerexecute
然後會呼叫呼叫適當httphandler類的processrequest()方法,如果是非同步的,則會呼叫beginprocessrequest()方法。例如如果請求乙個webpage,則由該page的乙個例項來處理這個request。
12. postrequesthandlerexecute
13.releaserequeststate - postreleaserequeststate
然後如果filter屬性被定義了,就會執行responsefiltering。
15.updaterequestcache - postupdaterequestcache
17.logrequest - postlogrequest
19.endrequest
HTTP長連線伺服器端推技術
伺服器推送 server push 推送技術的基礎思想是將瀏覽器主動查詢資訊改為伺服器主動傳送資訊。伺服器傳送一批資料,瀏覽器顯示這些資料,同時保證與伺服器的連線。當伺服器需要再次傳送一批資料時,瀏覽器顯示資料並保持連線。以後,伺服器仍然可以傳送批量資料,瀏覽器繼續顯示資料,依次類推。客戶端拉曳 c...
HTTP長連線伺服器端推技術
伺服器推送 server push 推送技術的基礎思想是將瀏覽器主動查詢資訊改為伺服器主動傳送資訊。伺服器傳送一批資料,瀏覽器顯示這些資料,同時保證與伺服器的連線。當伺服器需要再次傳送一批資料時,瀏覽器顯示資料並保持連線。以後,伺服器仍然可以傳送批量資料,瀏覽器繼續顯示資料,依次類推。客戶端拉曳 c...
HTTP長連線伺服器端推技術
伺服器推送 server push 推送技術的基礎思想是將瀏覽器主動查詢資訊改為伺服器主動傳送資訊。伺服器傳送一批資料,瀏覽器顯示這些資料,同時保證與伺服器的連線。當伺服器需要再次傳送一批資料時,瀏覽器顯示資料並保持連線。以後,伺服器仍然可以傳送批量資料,瀏覽器繼續顯示資料,依次類推。客戶端拉曳 c...