我们有一个HTTPModule,其唯一目的是进行“url重写”。根据HTTPModule的定义,所有浏览器请求(html,css,javascript,images等)都会通过此类的事件处理程序。
在登录过程中,我们正在抓住用户在Global.asax的Profile_OnMigrateAnonymous事件处理程序中从“匿名”切换到“登录”用户的那一刻。我们发现的一个问题是,当用户登录时,Profile_OnMigrateAnonymous事件可能会触发请求中的每个资源,以便为用户生成页面 - 即html,css,javascript,images等。我的理解是这个事件只会触发ONCE。为什么要多次开火?这是我们注册的“url重写”HTTPModule的结果吗?有没有办法可以将应用程序配置为仅触发该事件一次?
答案 0 :(得分:1)
对于正常的资源需求(css / js / img等),IIS直接处理请求。它只传递给特定文件名的asp_net工作者请求(例如.aspx和.asmx)。
您的HTTPModule基本上是强制IIS将所有请求转发给工作进程,因此每个请求都会触发Profile_OnMigrateAnonymous。
我认为您不能绕过对Profile_OnMigrateAnonymous的调用,但是您可以实现一些代码来检查.aspx / .ascx等文件名,然后才执行指定的实际操作。