好吧我做了这方面的一些其他的测试和我遇到一个非常奇怪的行为....
我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