__ VIEWSTATE нельзя, так как переопределяя методы, вы изменяете

внутреннюю процедуру, которая его создает.

Функция GetFileName в только что показанном коде назначает файлам имена по следующему шаблону:

ИдентификаторСеанса„иЯ1.viewstate

Метод ч:::- ^¡1-: Регз^чЮпсе.Мес!!ит определяет имя файла, из которого нужно считать данные, извлекает строку в кодировке Base64 и вызывает из класса ЕояГопгаг!<?1 метод, леесриалпзутщпй данные (рис. 8).


Некоторые файлы, созданные этой функцией во временном каталоге, по­казаны на рис. 7. Заметьте: чтобы ASP.NET-приложение могло создать локальный файл, вы должны наделить учетную запись ASP.NET особыми разрешениями в отношении файла или каталога. Для хранения всех фай­лов с состоянием отображения я бы посоветовал создать новый подката­лог. Удаление файлов для сеансов, срок действия которых истек, чуть сложнее. Для этого можно было бы создать службу Windows NT, периоди­чески проверяющую временный каталог и удаляющую ненужные файлы. Это лучше, чем простое удаление файлов при обработке события Ses­sion OnEnd,


Чтобы получить тдазжггХйть создания файла с состоянием отображения на 1г]н«'|н\ достаточно создать класс страницы как производный от клас­са ■ ■■ . 5i;ur! ■ который я показывал в одном из предыдущих фрагментов кода. Вот как это делается:

<% Wage Language="C#" Inherits="MsdnMag. ServerViewStatePage" X>

Но знайте, что идентификаторы сеансов (как и любой механизм состоя­ний) уязвимы перед атаками с повторением пакетов (replay attacks) и средствами анализа пакетов, поэтому здесь тоже нужно остерегаться неко­торых подводных камней, описанных выше. И вновь SS I — лучшее сред­ство защиты данных при пересылке. Кроме того, вы можете сохранять файлы вне пространства Web-приложения и назначать им случайные име­на. А реальное имя файла можно закодировать и записать в скрытое поле.

Заключение

Состояние отображения — ключевой элемент ЛЯР.ЫЕТ-стрлницы, по- скольку это главный механизм сохранения состояния серверных Web-эле- ментов управления на                                Всякий раз, когда страница возвращает-

ся на сервер, ее состояние отображения восстанавливается, обновляется текущими значениями параметров формы и используется для обработки события возврата формы на сервер (postback event). Обычно состояние отображение представляет собой х.нпнронаниую строку в кодировке Base64, хранимую в скрытом поле _ VIEWSTATE. Состояние отображения не кэшируется на клиенте, а                           передается от клиента к серверу и обрат-

но, что снижает производительность и угрожает безопасности приложе­ния. Но состояние отображения можно хранить на сервере, для чего потре­буется минимум кода. За это придется расплачиваться издержками на об­ращение к дисковому файлу или базе данных, зато страницы «похудеют» и будут более защищенными. Хотя я рассматривал постоянное хранилище на сервере (в файле или базе данных), ничто не меш.нт использовать для этой цели объект Cache, который позволит хранить данные на сервере и обеспечит высокое быстродействие.

Стивен Смит



Ёлки, Ёлочные Игрушки - купить елку. Выбирать поставщика теперь легко.