關於HttpModule中像圖片,*.css,*.js等資源文件也被請求問題的解決

出現這樣的一個問題,就是像圖片,*.css,*.js等文件被請求了,或靜態的*.html,導致程序代碼出錯
(一)可能出現的現象
(1)首次訪問測試頁面Test.aspx能跳轉到Login.aspx頁,但是Login.aspx頁面中的圖片不能加載,並且報js錯誤(Login頁面中有簡單的js判斷語句),請問各位大大是什麼原因造成的啊
(2) if (context.Session["userId"] == null || context.Session["userId"].ToString().Trim() == "") 將出現“未將對象引用設置到對象的實例。” 主要是HttpModule處理.aspx後,還要處理資源文件,第二次執行Session就爲空了,如果處理的*.apx頁面中沒有資源文件,就不會出現第二次請求了。
(3)這也是爲什麼有人問,好像死循環了,頁面被重複執行了,是的,就是因爲你頁面有資源文件所導致的。
(二)原因
(1)Http模塊必須是IIS將請求調度給 aspnet_isapi.dll ISAPI 擴展後才能發揮作用,默認下圖片、CSS、JS等請求IIS都是直接返回的,並不給aspnet_isapi.dll處理,Http模塊就不會發生作用。
(2)你用iis訪問頁面就不會過濾圖片,js,css 了發佈到iis後,圖片,css,js就都不會經過httpmodule了,如果你是用vs的 developmentserver 請求 那圖片還有css,js會有問題,httpmodule只攔截那些在iis應用程序配置中項關聯的後綴文件,像aspx,asmx,ascx

(三)解決辦法(參考了下網上的資料)
(1)有上面的原因,可以知道解決的辦法,就是發佈後,而不是開發環境( developmentserver 請求 )。直接用IIS即可。
 (2) HttpModule默認處理aspx頁面沒有問題,但是如果在IIS上配置html也通過HttpModule處理時會出現死循環無法跳出html頁面的問題,在web.config上加上<add verb="*" path= "*.htm" type= "System.Web.StaticFileHandler"/></httpHandlers>
可解決。
 
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/Joetao/archive/2010/01/23/5249309.aspx
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章