Содержание блога

воскресенье, 29 августа 2010 г.

Работа с куками (Cookies)

Иногда может потребоваться установить или прочитать Cookies из Silverlight приложения.
Cookies представляют собой строку текста, которая сохраняется на стороне клиента и отправляется на сервер, установивший данную Cookie, при каждом запросе. Их обычно используют для хранения данных о сессии, аутентификации и другой информации, специфичной для конкретного пользователя.
Например, интернет магазин может сохранять в Cookies информацию о выбранных незарегистрированным пользователем товарах. И даже, если такой пользователь закроет окно браузера, он сможет зайти на сайт позже и закончить оформление заказа.
В случае, когда пользователь работает только с Silverlight приложением, лучше использовать изолированное хранилище (IsolatedStorage), оно позволяет хранить любые данные и имеет значительно больший, притом увеличиваемый размер.
Однако бывает, что есть страница, использующая Cookies, и на ней нет Silverlight приложений. При этом прочитать информацию, сохранённую в Cookies надо уже на другой странице из Silverlight приложения.
Как это сделать? Нет ничего проще.
Читать и устанавливать Cookies в Silverlight приложении мы можем, используя объект HtmlPage.Document, определённый в пространстве имён System.Windows.Browser.
Для установки Cookie надо вызвать метод SetProperty() и передать ему строку следующего формата: «Ключ=Значение;expires=Дата_Окончания_Хранения.»
Вот типовой код:
private void SetCookie(string key, string value)
{
  DateTime expireDate =
  DateTime.Now + TimeSpan.FromDays(10);

  string cookie =
  String.Format("{0}={1};expires={2}", key,
  value, expireDate.ToString("R"));
  HtmlPage.Document.SetProperty("cookie", cookie);
}
Прочитать же Cookies можно используя свойство HtmlPage.Document.Cookies.

Также привожу типовой код:
private string GetCookie(string key)
{
  string[] cookies = HtmlPage.Document.Cookies.Split(';');

  foreach (string cookie in cookies)
  {
    string[] keyValue = cookie.Split('=');
    if (keyValue.Length == 2)
    {
      if (keyValue[0].ToString().Trim() == key)
        return keyValue[1];
    }
  }
  return null;
}


ссылка на сайт
(с) Сергей Пугачев

Комментариев нет:

Отправить комментарий