Ihttpmodule, Ihttphandler .NET - PullRequest
       20

Ihttpmodule, Ihttphandler .NET

0 голосов
/ 25 июля 2010

У меня есть некоторые сомнения по поводу HttpModule и HttpHandler Пожалуйста, помогите мне уточнить

1) В HttpModule я заметил, что методы Init вызывается только один раз.Метод context_BeginRequest, context_EndRequest и т. д., вызывающий каждый запрос.Гарантируется ли, что модуль Init будет вызывать один раз для разных пользователей (или разных запросов), а BeginRequest и т. Д. Будут вызывать каждый раз для разных пользователей (или разных запросов)?

2) Есть ли вероятность, что Application_Start (global.asax) может запускаться более одного раза, потому что может быть более одного объекта приложения

3) Поскольку объект приложения может отличаться (от пула приложений) В этом случае, как данные приложения распределяются между разными пользователями?

4) В HttpHandler метод ProcessRequest будет вызывать для каждого запроса (или для каждого пользователя).

Спасибо Риту

1 Ответ

1 голос
/ 25 июля 2010

"Гарантируется ли, что модуль Init будет вызывать один раз для разных пользователей (или другой запрос), а BeginRequest и т. Д. Будут вызывать каждый раз для разных пользователей (или другой запрос)?"

Метод init будет вызываться при запуске пула приложений / при первом запуске приложения.Это когда модуль загружен.

Метод BeginRequest вызывается каждый раз, когда приложение начинает обрабатывать новый HTTP-запрос.

"2) Есть ли вероятность того, что Application_Start (global.asax) может работать более одного раза, потому что может быть более одного объекта приложения"

Нетболее одного приложения в определенной папке.IIS не работает таким образом.Только один global.asax для каждого приложения, и Application_Start будет вызываться только один раз для каждого приложения, если только пул приложений не будет сброшен.

"3) Поскольку объект приложения может отличаться (от пула приложений) В этомСлучай, как данные приложения распределяются между разными пользователями? "

Зависит от того, где вы храните данные этого приложения и что вы используете для его извлечения.Я не уверен, что вы имеете в виду по этому поводу.Данные сеанса должны быть ограничены отдельным приложением (определенно для сервера состояния сеанса в процессе, и, если оно правильно настроено также для сервера состояния сеанса вне процесса)

"4) В методе HttpHandler ProcessRequestбудет вызывать каждый запрос (или каждого пользователя). "

Да, но только для запросов, которые сопоставлены с вашим обработчиком.И наоборот, HttpModule может быть вызван для ВСЕХ запросов.

...