如何讓aspnet服務加載靜態資源html(個人動態網頁靜態化) 轉

咱們知道,IIS自身是不能處理像ASPX擴展名這樣的頁面,只能直接請求像HTML這樣的靜態文件。

當客戶端請求一個服務器資源時,這個HTTP請求會被inetinfo.exe進程截獲(www服務),而後Check請求資源的類型,並依據資源映射信息(存儲在IIS元庫中,一種IIS專用的配置數據庫)將請求的資源分配給特定的處理程序模塊。
1,若是是靜態資源的請求,則分配由IIS處理(IIS在本地Web Server上訪問請求的文件),將內容輸出到控制檯,發出請求的瀏覽器就能接收到它了。-----End
2,若是是服務型請求資源(aspx),咱們前面講過:IIS自身是不能處理像ASPX擴展名這樣的頁面,,,那是怎麼處理這種服務型資源的呢?
重點:在IIS中有一個ISAPI過濾器,它是一個COM組件。ASP.NET服務在註冊到IIS的時候,就會添加一個Win32的擴展動態庫aspnet_isapi.dll(默認路徑:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll),在對應的擴展名中,根據定義好的方式(GET,HEAD,POST,DEBUG)來處理aspx界面。aspnet_isapi.dll處理代碼,生成標準的HTML代碼,返回給IIS,IIS再把內容發送到客戶瀏覽器。------End
html

 

Asp.Net頁面運行機制---請求處理流程究竟是什麼樣的呢?WebConfig優先級在Global前面仍是後面,bin下的DLL又是何時裝載的呢?
--------------------------
1.IIS接收到客戶請求
web

2. IIS把請求交給aspnet_isapi.dll處理數據庫

3.(若是是第一次運行程序)裝載bin目錄中的dllapi

4.(若是是第一次運行程序)讀取各級webconfig中的配置瀏覽器

5.(若是是第一次運行程序)編譯裝載global.asax,初始化HttpApplication實例服務器

6.建立響應請求的HttpContextsession

7.建立承載響應結果的HttpTextWriterasp.net

8.找到合適的HttpHandler(asp.net頁面),處理http請求spa

9.處理session,異常.net

10.把處理結果反饋個客戶 這就是可定製的HttpModule
----------------------------


寫這篇文章,是由於在作靜態化處理的時候,我但願本身打開的html也被當成服務型資源,被aspnet_isapi.dll處理,而html默認是靜態資源,是直接由IIS處理,不走Global等。
那這樣處理的代碼就無法被運行,怎麼辦呢?


當咱們瞭解上面,就明白了,爲何aspnet_isapi.dll會去處理aspx呢?那是由於在ISAPI過濾器有aspx的映射關係,那若是我在ISAPI過濾器中加入.html的映射關係和處理方式,是否是也能夠呢?
---------------------------------------------
在ISAPI過濾器中加入.html的映射關係和處理方式
【百度:把「.htm」映射到aspnet_isapi.dll】
操做:點擊屬性->配置->映射->添加->可執行文件名先aspnet_isapi.dll
擴展名輸入.htm或者.html根據後綴來肯定.限制爲GET,HEAD,POST,DEBUG,去掉檢測文件是否存在.保存便可.
---------------------------------------------

哈哈哈……是的,成功了,html成功的被aspnet_isapi.dll處理。至此,個人完美靜態化處理也告一段落!!!!蛋終於不疼了。。

相關文章
相關標籤/搜索