Вопросы сохранения параметров web-приложения

Часто web-приложения требуют временного запоминания информации, которой должны пользоваться несколько серверных сценариев в разное время. Типичным примером такой информации является сохранение параметров пользователя при его авторизации. После авторизации параметры пользователя сохраняются и последующие опции и возможности работают только при условии наличия этой информации.

Возможны следующие способы сохранения и получения такой информации:

·  Через объект Application типа HttpApplicationState;

·  Через параметры сессии Session типа HttpSessionState;

·  Через создание ключиков типа HttpCookie.

Объекты Application и Session доступны на любой -странице. Обращение к параметрам осуществляется через имена запоминаемых параметров, примененных как индексы ассоциативных массивов:

Application["proba"] = (sender as TextBox).Text;

Session["proba"] = (sender as TextBox).Text;

Отличие объектов, сохраняемых в Application и Session, заключается в доступности данных параметров для различных пользователей. Те параметры, которые сохраняются в объекте Application, становятся доступными для всех пользователей, которые обращаются к приложению. Объект Session же сохраняет параметров только одной сессии – общения отдельного пользователя с web-приложением. Обращение каждого нового пользователя вызывает создание новой сессии, которой на сервере присваивается идентификационный номер, который можно получить через свойство SessionID.

НЕ нашли? Не то? Что вы ищете?

Удаление параметров сессии и приложения осуществляется с помощью методов Remove, которые получают в качестве параметров имя удаляемого параметра.

Application. Remove("proba");

Session. Remove("proba");

В отличие от параметров приложения и сессии ключики сохраняются на клиентском компьютере, поэтому должны передаваться между сервером и клиентом через объекты Request и Response. Эти объекты содержат коллекции Cookies, содержанием которых можно управлять с помощью методов Add и Remove.

Добавление нового ключика осуществляется с помощью объекта HttpCookie:

// создание временного ключика

// первый параметр – имя ключика, второй параметр – значение ключика

HttpCookie c = new HttpCookie("NameCookie", myValue);

Response. Cookies. Add(c);

// создание постоянного ключика

// первый параметр – имя ключика, второй параметр – значение ключика

HttpCookie c = new HttpCookie("NameCookie", myValue);

// дата сохранения ключика

c. Expires = DateTime. Parse("04/30/2010");

Response. Cookies. Add(c);

Проверить наличие сохраненного параметра сессии, приложения или ключика можно с помощью проверки ссылки на null при обращении к конкретному имени параметра:

if(Session["proba"]==null)

Session["proba"] = (sender as TextBox).Text;

else

TextBoxMessage. Text = "Параметр сессии уже создан";

или:

if (Request. Cookies["IDBasket"] != null)

id = Request. Cookies["IDBasket"].Value;

else

{

id = "ID" + DateTime. Now. Ticks;

HttpCookie hc=new HttpCookie("IDBasket",id);

hc. Expires=DateTime. Now. AddDays(1);

Response. Cookies. Add(hc);

}