Вопросы сохранения параметров 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);
}


