Событие Profile_OnMigrateAnonymous запускается несколько раз - PullRequest
1 голос
/ 25 августа 2009

У нас есть HTTPModule, единственной целью которого является «перезапись URL». По определению HTTPModule ВСЕ запросы браузера (html, css, javascript, images и т. Д.) Проходят через обработчики событий этого класса.

В процессе входа в систему мы улавливаем момент, когда пользователь переключается с «анонимного» на «зарегистрированного» пользователя в обработчике событий Profile_OnMigrateAnonymous в Global.asax. Одна проблема, которую мы обнаруживаем, заключается в том, что когда пользователь входит в систему, событие Profile_OnMigrateAnonymous запускает, по-видимому, для, возможно, КАЖДОГО ресурса в запросе на генерацию страницы для пользователя, а именно - html, css, javascript, images и т.д. было мое понимание, что это событие будет срабатывать только ОДИН РАЗ. Почему это будет запускаться несколько раз? Это результат нашего зарегистрированного «перезаписи URL» модуля HTTPModule? Можно ли настроить приложение так, чтобы оно запускалось только один раз?

1 Ответ

1 голос
/ 25 августа 2009

Для обычных запросов ресурсов (css / js / img и т. Д.) IIS обрабатывает запрос напрямую. Он только передает рабочему asp_net запросы на конкретные имена файлов (такие как .aspx и .asmx).

Ваш HTTPModule в основном вынуждает IIS пересылать все запросы рабочему процессу, поэтому каждый запрос запускается из Profile_OnMigrateAnonymous.

Я не думаю, что вы можете обойти вызов Profile_OnMigrateAnonymous, однако вы могли бы реализовать немного кода, чтобы проверить имя файла .aspx / .ascx и т. Д., И только затем выполнить фактические указанные действия.

...