Главная > Silverlight > Cookies в Silverlight приложениях

Cookies в Silverlight приложениях

Иногда может потребоваться установить или прочитать 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;
}

Tags: ,
  1. mowdeevamak
    21 Август 2009 в 17:33 | #1

    Интересный блог- ещё зайду

  2. 25 Апрель 2010 в 22:49 | #2

    а как можно передать id через адресную строку на другую страницу?

  1. Пока что нет уведомлений.
Необходимо войти на сайт, чтобы написать комментарий.