好的,我对此进行了一些其他测试,但我遇到了一个非常奇怪的行为....
如果模块至少被读取一次,我尝试实现一个标志来跳过模块中的处理。我这样做只是以这种方式在 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 是我用于调试 httpmodules 目的的静态(vb 共享)属性。现在有了这段代码,每次页面刷新时调试变量应该是+1(我在 Default.aspx 后面的代码中使用简单的 Response.Write(GlobalAppSettings.debug) 进行检查。这是因为在 Application_PostAuthenticateRequest 的末尾方法我设置 HttpContext.Current.Items("UserCheck") = "1"
那么为什么在每个页面上刷新 GlobalAppSettings.debug 变量以 3 或 5 步递增?快把我逼疯了