сеанс сервера sql на главной странице и на странице aspx - PullRequest
2 голосов
/ 28 августа 2011

Я использую состояние сеанса сервера SQL.

Если я использую главную страницу, которая вызывает несколько переменных, сохраненных в сеансе, а затем снова использую сеанс позже в коде aspx, выполняет ли это триггер:

a) 2 чтения базы данных, 1 во время процесса главной страницы и второе при выполнении aspx.

b) 1 чтение базы данных, сеанс загружается во время процесса главной страницы и сохраняется в течение жизненного цикла страницы.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 28 августа 2011

Главные страницы - это пользовательские элементы управления, прикрепленные к странице и рассматриваемые как таковые. Таким образом, этот вопрос относится не только к главным страницам, но и ко всем пользовательским элементам управления, пользовательским элементам управления и стандартным элементам управления, прикрепленным к странице.

Состояние сохраненного сеанса SQL Server сериализуется / десериализуется в / из SQL Server по запросу. Это не запрос переменной, а сам запрос HTTP.

В жизненном цикле страницы значения извлекаются в событии AcquireRequestState и помещаются в ReleaseRequesteState. Эти события являются аспектами системы HttpModule и, как таковые, наследуются классом Page.

Итак, чтобы ответить на ваш вопрос, есть только один вызов в начале жизненного цикла страницы (до INIT) к SQL Server, чтобы получить весь набор переменных сеанса независимо от того, сколько переменных у вас есть в состоянии сеанса , Затем в конце жизненного цикла страницы (а это после RENDER & UNLOAD) происходит второй вызов базы данных для сохранения состояния сеанса

2 голосов
/ 28 августа 2011

Чтение приведет только к 1, объект сеанса воссоздается из хранилища в начале запроса.

Когда страница сохраняет данные в Session, значение загружается в класс словаря для измерения, размещенный в классе HttpSessionState. Содержимое словаря сбрасывается поставщику состояния, когда текущий запрос завершается. Если состояние сеанса пустое, поскольку данные не были программно помещены в словарь, никакие данные не сериализуются на носитель данных и, что более важно, ни один слот не создается ни в ASP.NET Cache, ни в SQL Server, ни в службе состояний NT для отслеживать текущий сеанс. Это сделано из соображений производительности, но имеет ключевое значение для способа обработки идентификатора сеанса: новый идентификатор сеанса генерируется для каждого запроса до тех пор, пока некоторые данные не будут сохранены в словаре сеанса. - см. http://msdn.microsoft.com/en-us/library/aa479041.aspx для более подробной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...