1

我们有一个 HTTPModule,其唯一目的是进行“url 重写”。根据 HTTPModule 的定义,所有浏览器请求(html、css、javascript、图像等)都通过此类的事件处理程序。

在登录过程中,我们在 Global.asax 的 Profile_OnMigrateAnonymous 事件处理程序中捕捉到用户从“匿名”切换到“登录”用户的时刻。我们发现的一个问题是,当用户登录时,Profile_OnMigrateAnonymous 事件似乎触发了请求中的每个资源以向用户生成页面 - 即 html、css、javascript、图像等。它我的理解是这个事件只会触发一次。为什么会多次触发?是我们注册的“url 重写”HTTPModule 的结果吗?有没有办法我们可以将应用程序配置为只触发一次该事件?

4

1 回答 1

1

对于正常的资源请求(css/js/img 等),IIS 直接处理请求。它只传递给 asp_net worker 对特定文件名(例如 .aspx 和 .asmx)的请求。

您的 HTTPModule 基本上是在强制 IIS 将所有请求转发到工作进程,因此每个请求都会触发 Profile_OnMigrateAnonymous。

我认为您不能绕过对 Profile_OnMigrateAnonymous 的调用,但是您可以实现一些代码来检查 .aspx/.ascx 等文件名,然后才能执行指定的实际操作。

于 2009-08-25T16:54:52.440 回答