2010-07-24 2 views
0

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

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

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

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

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

Благодаря Риту

ответ

1

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

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

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

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

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

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

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

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

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

+0

Спасибо за ваш ответ. В 3) Мое сомнение в том, что может быть другой объект приложения (из пула фабрик HttpApplication) для разных пользователей. Предположим, что я сохранил Application ["Key"] = некоторые данные в Application_Start и если объект Application изменится для другого пользователя. Будет ли другой пользователь способен получить эти значения, если да, как? – Ritu

+0

Привет, Стив, http: //www.dominicpettifer.co.uk/Blog/41/ihttpmodule-gotchas---the-init---method-can-get-called-multiple-times По ссылке мы можем иметь множественный вызов init – Ritu

 Смежные вопросы

  • Нет связанных вопросов^_^