2009-08-25 50 views
1

我們有一個HTTPModule,其唯一目的是做「url重寫」。根據HTTPModule的定義,所有瀏覽器請求(html,css,javascript,圖像等)都會經過此類的事件處理程序。Profile_OnMigrateAnonymous event firing times

在登錄過程中,我們捕捉到用戶在Global.asax的Profile_OnMigrateAnonymous事件處理程序中從「匿名」切換到「登錄」用戶的時刻。我們發現的一個問題是,當用戶登錄時,Profile_OnMigrateAnonymous事件觸發,看似是爲請求中的可能EVERY資源生成頁面給用戶 - 即html,css,javascript,圖像等。是我的理解,這個事件只會觸發一次。爲什麼它會多次發射?這是我們註冊的「url重寫」HTTPModule的結果嗎?有沒有一種方法可以配置應用程序只觸發一次該事件?

回答

1

對於正常的資源請求(css/js/img等),IIS直接處理請求。它只傳遞給asp_net worker對特定文件名(如.aspx和.asmx)的請求。

您的HTTPModule基本上是強制IIS將所有請求轉發給工作進程,因此每個請求都觸發Profile_OnMigrateAnonymous。

我不認爲你可以繞過對Profile_OnMigrateAnonymous的調用,但是你可以實現一些代碼來檢查.aspx/.ascx等文件名,然後才執行指定的實際操作。