Учебный семинар по ASP.NET Нижегородское сообщество.NET разработчиков Нижегородское сообщество.NET разработчиков Лаборатория информационных технологий ВМК ННГУ 1 Максим Бовыкин Максим Бовыкин Microsoft Student Partner, ННГУ
1. View State 2. Межстраничный обмен 3. COOKIES 4. Session State Mattew MacDonald: Pro ASP.NET 3.5 in C# 2008 Глава 1, Раздел 6 2
ASP.NET State Management: 3
4
5
6
7
8 Как и большинство типов управления состоянием в ASP.NET, View State основывается на dictionary collection, где каждому элементу соответствует уникальное имя: ViewState["Counter"] = 1; При извлечении значения, обращение происходит по имени: int counter; if (ViewState["Counter"] != null) counter = (int)ViewState["Counter"]; Всегда необходимо делать проверку на NULL!
9
10 Дляхранение объектов во View State Обязателен атрибут [Serializable] Все порождаемые классы тоже должны иметь этот атрибут Все члены класса также должны быть сериализованы
11
12 В отличии от свойств элементов управления, значения переменных хранить во View State нельзя. Однако это ограничение можно обойти, например так:
13 Hash codes включены по умолчанию. Для изменения:
ASP.NET State Management: 14
15 Для хранения информации в строке запроса необходимо занести ее туда вручную: Response.Redirect("QueryStringRecipient.aspx" + "?Version=" + ((Control)sender).ID); Извлечение значения: Request.QueryString["Version"]; URL шифрование Response.Redirect("QueryStringRecipient.aspx" + "?Version=" + Server.UrlEncode(((Control)sender).ID));
16
ASP.NET State Management: 17
18 Cookies – это еще один способ хранения информации для использования в дальнейшем. Это небольшие файлы, хранящиеся в браузерных директориях. Для использования куки необходимо подключить: using System.Net; Создание кукисов: HttpCookie cookie = new HttpCookie("Preferences"); cookie["Lang"] = "English"; cookie["Country"] = "RUS"; Response.Cookies.Add(cookie); //Set a long-live cookie - 1 year cookie.Expires = DateTime.Now.AddYears(1);
19 Извлечение кукисов: string lang; if (cookie != null) lang = cookie["Lang"]; Удаление кукисов: HttpCookie cookie = new HttpCookie("Preferences"); cookie.Expires = DateTime.Now.AddYears(-1); Response.Cookies.Add(cookie);
ASP.NET State Management: 20
21 Sessoin State – это мощный инструмент управления состоянием. Он позволяет хранить информацию на страницах так, что эта информация будет доступна другим страницам. Что лучше всего – Session State использует такой же синтаксис, как и View State. Отличие в имени встроенного в страницу свойства. Session State позволяет хранить информацию абсолютно для каждого пользователя, о его действиях, etc.Но приходится жертвовать местом на сервере, потому как к сайту одновременно могут обращаться тысячи пользователей.
22
23 Для использования Session State необходимо подключить: using System.Web.SessionState; Информация из Session State может быть потеряна в следующих случаях: Если пользователь закрыл/перезапустил браузер Если пользователь открыл ту же самую страницу в новом экземпляре браузера или в другом браузере. Session State хранится для текущего запущенного браузера Если превышен Session timeout Если сессия была закрыта программистом путем вызова Session.Abandon();
24
25
26
27 Off - Session State отключен InProc - Сохранение информации в текущем домене приложения. Это обеспечивает наилучшую производительность, но наименьшее время жизни. - Опция по умолчанию SQLServer Позволяет использовать MS SQL Server для хранения информации о состоянии сессии StateServer Отдельный windows service для управления состояниями Возможен хостинг State Severа на другом компьютере
28
29
30 Timeout устанавливает время в минутах, которое ASP.NET будет ждать, не отправляя запросов, до того как прервать сессию. Значение timeout можно устанавливать как из web.config так и из кода Session.Timeout = 20; Для безопасного хранения Session State необходимо использовать безопасное хранение кукисов: Request.Cookies[ASP.NET_SessionId].Secure = true;
Вопросы? 31