好吧我做了這方面的一些其他的測試和我遇到一個非常奇怪的行爲....
我tryed實現一個標誌跳過模塊中的處理如果模塊具有至少讀過一次。我這樣做,乾脆把國旗中的var HttpContext.Current.Items這樣:
Private Sub Application_PostAuthenticateRequest(ByVal source As Object, ByVal e As EventArgs)
' A flag to prevent multiple execution on each request for static files like images, css, js
If HttpContext.Current.Items("UserCheck") Is Nothing AndAlso _
DirectCast(HttpContext.Current.Items("UserCheck"), String) <> "1" Then
GlobalAppSettings.debug += 1
GlobalAppSettings.Debug是靜態的(VB共享)財產我在調試時使用的HttpModules的purprose。 現在使用這段代碼,調試變量在每個頁面上刷新+1(我在Default.aspx後面的代碼中使用一個簡單的Response.Write(GlobalAppSettings.debug)來檢查這個 這是因爲在該Application_PostAuthenticateRequest方法我設置HttpContext.Current.Items(「UserCheck」)=「1」
那麼,爲什麼在每一頁上刷新GlobalAppSettings.debug變量增量的3或5? 步驟是把我逼瘋
哎唷!這傷害...我不會做任何事情與數據庫,但我從cookie中讀取,並創建一個自定義的IPrincipal極其複雜(與角色,德克斯,路徑多應用),所以我想這可能是一個好主意上下文。項目在第一次後跳過整個過程! 所以我想這會發生在所有的httpmodules上,它們在每個請求上都會被觸發,即使是靜態文件,比如圖像,css,js等等也是如此。 即使我把它們放在另一個域名如static.mysite.com? 奇怪的是沒有辦法排除靜態內容觸發httpmodules – Manight