Могут ли несколько пользователей совместно использовать экземпляр HttpApplication?
Я использовал таблицу в верхней части этой статьи в качестве ссылки. У меня три вопроса:
1 - Может ли несколько пользователей (из разных физических мест) когда-либо делиться HttpApplication
пример? Если так, это происходит по умолчанию?
2 - Может ли несколько пользователей (из разных физических мест) когда-либо делиться HttpApplicationState
пример? Если так, это происходит по умолчанию?
3 - Может ли несколько пользователей приложения ASP.NET совместно использовать одноэлементный экземпляр или значение статической переменной? Если так, это происходит по умолчанию?
Спасибо за разъяснение этого.
2 ответа
Ответ на все шесть ваших вопросов - да.
Состояние пользователя должно храниться в сеансе.
HttpApplication содержит состояние приложения Asp.Net для каждого экземпляра w3svc.exe. Таким образом, для каждого веб-сервера в вашем приложении сохраняется состояние приложения. Если вы используете веб-садоводство, существуют другие проблемы с объектом HttpApplication.
Все пользователи на одном сервере, в одном потоке будут совместно использовать HttpApplication, HttpApplicationState и все значения статических переменных. Когда на сервере запущено несколько экземпляров HttpApplication, одновременные пользователи не будут обращаться к одному и тому же экземпляру этих объектов. Я НЕ рекомендую хранить значения в этих объектах... гораздо лучше использовать объект Cache для хранения значений, которыми вы хотите поделиться с пользователями на сервере.
Объект Cache может принимать зависимости и значения срока действия... это позволит вам контролировать "свежесть" значений, которые вы храните на сервере.
Для каждого пользователя значения должны храниться в объекте Session.