Поделиться через


Пошаговое руководство. Сохранение сведений пользователя веб-узла с помощью свойств профиля

Обновлен: Ноябрь 2007

Свойства ProfileASP.NET позволяют приложению отслеживать и постоянно сохранять пользовательские сведения. Например, пользователь может указать почтовый индекс или избранную цветовую схему, а приложение может сохранить эти сведения и извлекать их из любого места в приложении. ASP.NET автоматически сравнивает текущего пользователя (вне зависимости от того является ли он анонимным или зарегистрированным) с личными сведениями, хранящимися для учетной записи пользователя.

В этом пошаговом руководстве описаны способы добавления свойств Profile в приложение и использования свойств Profile для создания персональных возможностей для посетителей веб-узла.

В этом пошаговом руководстве вы узнаете, как выполнить следующие задачи:

  • Настройка приложения для использования свойств Profile.

  • Определение простых и сложных свойств Profile, поддерживаемых для пользователей.

  • Задание и извлечение значений Profile в приложении.

  • Использование свойств Profile анонимными и зарегистрированными пользователями.

Обязательные компоненты

Для выполнения инструкций этого пошагового руководства необходимы следующие компоненты.

  • Microsoft Visual Web Developer.

  • Microsoft .NET Framework.

  • Microsoft SQL Server Standard Edition.

    Сведения свойства Profile, создаваемого в этом руководстве, хранятся в базе данных SQL Server Standard Edition.

  • Разрешение использования файлов Сookie в обозревателе.

    taab950e.alert_note(ru-ru,VS.90).gifПримечание.

    Свойства Profile ASP.NET можно использовать без файлов Сookie, если приложение настроено для работы без них. Однако в этом пошаговом руководстве используются параметры конфигурации по умолчанию для свойств Profile, которые используют файлы Сookie.

Создание и настройка веб-узла

Если было использовано Пошаговое руководство. Создание базовой веб-страницы в Visual Web Developer для создания веб-узла в Microsoft Visual Studio, то можно использовать этот веб-узел и перейти к следующему разделу. В противном случае создайте новый веб-узел, выполнив следующие действия.

Создание веб-узла на базе файловой системы

  1. Запустите Visual Studio.

  2. В меню Файл выберите Создать, а затем нажмите Веб-узел (или в меню Файл щелкните Новый веб-узел).

    Откроется диалоговое окно Создать веб-узел.

  3. В разделе Установленные шаблоны Visual Studio выберите Веб-узел ASP.NET.

  4. В крайнем левом списке Расположение выберите Файловая система.

  5. В крайнем правом списке Расположение введите имя папки, где следует хранить страницы веб-узла.

    Например, введите имя папки C:\WebSites.

  6. В списке Язык выберите язык программирования, с которым вы предпочитаете работать.

  7. Нажмите кнопку ОК.

    Visual Web Developer создает папку и новую страницу с именем Default.aspx.

Настройка свойств профиля

Перед началом работы со свойствами Profile ASP.NET необходимо настроить приложение, чтобы включить и определить свойства Profile, которые необходимо отслеживать для каждого пользователя. Для начала создайте простое свойство PostalCode, которое веб-узел будет отслеживать для пользователей. Настройте свойство PostalCode таким образом, чтобы узел мог отслеживать его для анонимных и зарегистрированных пользователей.

Сначала выполните действия в качестве анонимного пользователя. При этом ASP.NET присваивает уникальный анонимный идентификатор, который хранится в файле Сookie на компьютере. ASP.NET позволяет использовать этот анонимный идентификатор для задания и получения уникальных значений.

Настройка свойств профиля на веб-узле

  1. В обозревателе решений определите, содержит ли веб-узел файл Web.config.

    Если веб-узел не содержит файл Web.config, то выполните следующие действия:

    1. Щелкните правой кнопкой мыши по имени веб-узла.

    2. Выберите команду Добавить новый элемент.

    3. В разделе Установленные шаблоны Visual Studio выберите Файл веб-конфигурации.

    4. Нажмите кнопку Добавить.

      Новый файл с именем Web.config добавляется к узлу и открывается в редакторе.

  2. Добавьте следующий элемент <profile> в файл Web.config как дочерний элемент <system.web>:

    <system.web>
    
      <anonymousIdentification enabled="true" />  <profile>    <properties>      <add name="PostalCode"         type="System.String"         allowAnonymous="true" />    </properties>  </profile>
    
    <!-- other Web.config settings here -->
    </system.web>
    
    taab950e.alert_note(ru-ru,VS.90).gifПримечание.

    Элементы в файле Web.config чувствительны к регистру. Следовательно, необходимо убедиться, что элементы были скопированы или введены в точности в том виде, как они приведены здесь.

    Были добавлены следующие элементы:

    • Элемент <anonymousIdentification>, который указывает возможность использования свойств Profile только зарегистрированными пользователями (прошедшими проверку подлинности) или же как зарегистрированными, так и анонимными пользователями.

      В этом случае присвойте параметру enabled значение true. Следовательно, сведения о свойствах Profile будут отслеживаться как для зарегистрированных, так и для анонимных пользователей.

    • Элемент <properties>, содержащий все определяемые свойства Profile.

    • Элемент <add>, определяющий новый элемент <profile>.

      В этом случае было определено одно свойство Profile с именем PostalCode.

      При определении свойства Profile укажите его тип данных, используя имя класса типа .NET Framework. Можно также указать, следует ли отслеживать свойство Profile для анонимных пользователей. После включения анонимной идентификации можно дополнительно указать необходимость отслеживания свойств Profile индивидуально для анонимных пользователей.

      В этом случае создайте новый элемент add для каждого дополнительного свойства Profile, которое необходимо определить.

      taab950e.alert_note(ru-ru,VS.90).gifПримечание.

      По умолчанию сведения профиля пользователя хранится в базе данных SQL Server Standard Edition в подкаталоге Application_Data веб-узла. В этом пошаговом руководстве используется конфигурация по умолчанию. В реальных приложениях, поддерживающих большое число пользователей, лучше всего хранить данные свойства Profile в базе данных Microsoft SQL Server. Дополнительные сведения см. в разделе "Следующие действия" далее в этом руководстве.

Задание и возвращение свойства PostalCode

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

Создание страницы для задания и возврата свойства PostalCode

  1. Добавьте новую веб-страницу на узел с именем Profiles.aspx.

  2. Откройте файл Profiles.aspx и переключитесь в режим разработки.

  3. Из раздела Стандартные в панели элементов перетащите на страницу элементы управления, перечисленные в следующей таблице, и задайте их свойства, как указано.

    Элемент управления

    Параметры свойств

    TextBox

    ID = textPostalCode

    Button

    ID = SetPostalCode

    Text = Укажите почтовый индекс

    Label

    ID = labelPostalCode

    Text = (пусто)

  4. Перейдите в режим исходного кода и добавьте следующий атрибут кнопке SetPostalCode, если этот атрибут не существует.

    OnClick="SetPostalCode_Click"
    
  5. Создайте обработчик для события Click для SetPostalCode и добавьте следующий выделенный код.

    Sub SetPostalCode_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs)
        Profile.PostalCode = Server.HtmlEncode(textPostalCode.Text)    labelPostalCode.Text = Profile.PostalCode
    End Sub
    
    void SetPostalCode_Click(object sender, System.EventArgs e)
    {
        Profile.PostalCode = Server.HtmlEncode(textPostalCode.Text);    labelPostalCode.Text = Profile.PostalCode;
    }
    

    При включении профиля пользователя ASP.NET динамически создает свойство с именем Profile, добавляющее профиль пользователя в текущий контекст. После этого отдельные свойства Profile доступны с использованием Profile.PostalCode.

  6. Создайте обработчик для события Page_Load и добавьте следующий выделенный код.

    Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        labelPostalCode.Text = Profile.PostalCode
    End Sub
    
    void Page_Load(object sender, System.EventArgs e)
    {
        labelPostalCode.Text = Profile.PostalCode;
    }
    

    Этот код отображает значение Profile.PostalCode при каждом запросе страницы.

Тестирование свойства профиля PostalCode

Теперь можно протестировать свойство PostalCode, определенное в предыдущем разделе.

taab950e.alert_note(ru-ru,VS.90).gifПримечание.

При работе с существующим веб-узлом с включенным членством выйдите из системы.

Тестирование свойства PostalCode

  1. Нажмите CTRL + F5 для запуска страницы Profiles.aspx.

    taab950e.alert_note(ru-ru,VS.90).gifПримечание.

    Если обозреватель выводит ошибку 502 или ошибку указывающую на невозможность отображения страницы, то, возможно, необходимо настроить обозревателя для обхода прокси-сервера для локальных запросов. Дополнительные сведения см. в разделе Практическое руководство. Обход прокси-сервера для локальных веб-запросов.

  2. Введите почтовый индекс в поле и нажмите кнопку Задать почтовый индекс.

    Введенный почтовый индекс отображается в элементе управления Label.

  3. Закройте обозреватель, чтобы завершить текущий сеанс.

  4. Снова откройте обозреватель и запросите страницу Profiles.aspx.

    Ранее введенный почтовый индекс отображается в элементе управления Label.

Последний шаг в предыдущей процедуре показывает, что ASP.NET хранит значение PostalCode. При повторном посещении страницы ASP.NET может прочитать значение PostalCode в зависимости от уникального анонимного идентификатора.

Определение сложных свойств

Ранее в разделе "Задание и возврат свойства PostalCode" этого пошагового руководства было создано простое свойство с именем PostalCode, которое хранилось в виде строки. В этом разделе предлагается описать свойство с именем FavoriteURLs, которое является коллекцией. ASP.NET может хранить свойства Profile любого типа, но при определении свойства Profile необходимо предоставлять дополнительные сведения.

Определение свойства FavoriteURLs

  1. Откройте файл Web.config.

  2. Добавьте следующий выделенный элемент в элемент profile, созданный в разделе "Настройка свойств профиля" ранее в этом руководстве.

    <anonymousIdentification enabled="true" />
      <profile>
        <properties>
        <add name="PostalCode" 
          type="System.String" 
          allowAnonymous="true" />
        <add name="FavoriteURLs"       type="System.Collections.Specialized.StringCollection"      allowAnonymous="true" />
        </properties>
      </profile>
    

    Было добавлено новое свойство Profile с именем FavoriteURLs. Для свойств Profile, которые не являются свойствами простого типа (например, строкой или целым числом), необходимо указать полное имя типа. Здесь указывается, что свойство Profile — это коллекция, содержащая строки.

  3. Сохраните и закройте файл Web.config.

Задание и возврат свойства FavoriteURLs

Использование свойства FavoriteURLs, которое является коллекцией, аналогично использованию коллекции в любом контексте. В этой части пошагового руководства предлагается обновить страницу Profiles.ASPX, созданную в разделе "Задание и возврат свойства PostalCode" ранее в этом руководстве. Для этого необходимо добавить элемент управления TextBox, в котором пользователи могут ввести URL-адрес. Когда пользователь щелкает Добавить, в свойство FavoriteURLs добавляется URL-адрес. Также в раскрывающемся списке отображается текущий список избранных URL-адресов.

Задание и возврат свойства FavoriteURL

  1. На странице Profiles.aspx добавьте следующие элементы управления и задайте их свойства, как указано в следующей таблице.

    Элемент управления

    Параметры свойств

    TextBox

    ID = textFavoriteURL

    Button

    ID = AddURL

    Text = Добавьте URL-адрес

    ListBox

    ID = listFavoriteURLs

  2. Перейдите в режим исходного кода и добавьте следующий атрибут к кнопке Добавить URL-адрес, если этот атрибут не существует.

    OnClick="AddURL_Click"
    
  3. Создайте обработчик для события Click для кнопки Добавить URL-адрес и добавьте следующий выделенный код.

    Sub AddURL_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs)
        Dim urlString As String = _        Server.HtmlEncode(textFavoriteURL.Text)
        If Profile.FavoriteURLs Is Nothing Then
            Profile.FavoriteURLs = New _
                System.Collections.Specialized.StringCollection
        End If
        Profile.FavoriteURLs.Add(urlString)    DisplayFavoriteURLs()
    End Sub
    
    void AddURL_Click(object sender, System.EventArgs e)
    {    
        String urlString = Server.HtmlEncode(textFavoriteURL.Text);
        if(Profile.FavoriteURLs == null)
        {
            Profile.FavoriteURLs = new 
                System.Collections.Specialized.StringCollection();
        }
        Profile.FavoriteURLs.Add(urlString);    DisplayFavoriteURLs();
    }
    
  4. В обработчик события Page_Load добавьте следующую выделенную строку кода.

    Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        labelPostalCode.Text = Profile.PostalCode
        DisplayFavoriteURLs()
    End Sub
    
    void Page_Load(object sender, System.EventArgs e)
    {
        labelPostalCode.Text = Profile.PostalCode;
        DisplayFavoriteURLs();
    }
    
  5. Добавьте следующие подпрограммы для обновления отображения URL-адреса в элементе управления ListBox.

    Sub DisplayFavoriteURLs()
        listFavoriteURLs.DataSource = Profile.FavoriteURLs
        listFavoriteURLs.DataBind()
    End Sub
    
    void DisplayFavoriteURLs()
    {    
        listFavoriteURLs.DataSource = Profile.FavoriteURLs;
        listFavoriteURLs.DataBind();
    }
    

Тестирование свойства профиля FavoriteURLs

Теперь можно выполнить тестирование свойства FavoriteURLs.

Тестирование свойства FavoriteURLs

  1. Для запуска страницы Profiles.aspx нажмите CTRL+F5.

    Сначала значения в элементе управления ListBox отсутствуют.

  2. Введите URL-адрес в поле и нажмите кнопку Добавить.

    URL-адрес добавляется в элементу управления ListBox.

  3. Повторите предыдущий шаг, чтобы добавить другой URL-адрес.

  4. Закройте обозреватель.

  5. Снова откройте обозреватель и откройте страницу Profiles.aspx.

    Обратите внимание, что элемент управления ListBox заполняется URL-адресами, введенными перед закрытием обозревателя.

Миграция свойств профиля при входе в систему

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

В этом разделе предлагается перенести пользовательскую настройку PostalCode. Необходимо иметь веб-узел, который уже настроен на использование удостоверений пользователей и имеет страницу входа в систему. Если веб-узел, с которым осуществляется работа, не настроен для членства, то используйте следующую процедуру для его включения. Если веб-узел уже поддерживает членство, то можно перейти к следующему разделу.

Настройка веб-узла для использования членства

  1. В Visual Studio в меню Веб-узел нажмите Конфигурация ASP.NET.

    Отображается средство администрирования веб-узла Web Site Administration Tool.

  2. Перейдите на вкладку Безопасность.

  3. Нажмите Безопасность, а затем в разделе Пользователи щелкните Выбор типа проверки подлинности.

  4. Выберите "Из интернета", а затем щелкните "Готово".

    Параметр Из интернета указывает, что приложение будет использовать формы проверки подлинности, то есть пользователи будут входить в систему с помощью страницы входа в систему.

  5. На вкладке Безопасность в разделе Пользователи нажмите Создать пользователя и создайте учетную запись пользователя.

    Можно использовать любое имя и пароль, но обязательно запомните введенные имя и пароль. Используйте собственный адрес электронной почты. (В этом пошаговом руководстве сообщения электронной почты не отправляются).

  6. После завершения определения учетной записи пользователя закройте средство администрирования веб-узла Web Site Administration Tool.

  7. Из группы Вход в систему в панели элементов перетащите на страницу элементы управления Login и LoginName.

    Элемент управления LoginName не является обязательным для входа в систему, но позволяет понять, что вход выполнен.

Создание обработчика миграции

Для переноса параметров анонимного пользователя в параметры зарегистрированного пользователя необходимо выполнить миграцию во время изменения удостоверения пользователя. Для этой цели ASP.NET содержит событие MigrateAnonymous. В обработчик для события MigrateAnonymous можно передать параметры, которые необходимо сохранить.

Создание обработчика миграции

  1. В обозревателе решений щелкните правой кнопкой мыши имя веб-узла, а затем щелкните Добавить новый элемент.

  2. В разделе Установленные шаблоны Visual Studio нажмите кнопку Глобальный класс приложения, а затем Добавить.

    Нет необходимости вводить имя, поскольку файл всегда называется Global.asax.

  3. Введите следующий код, чтобы создать новый обработчик для события MigrateAnonymous.

    Sub Profile_MigrateAnonymous(ByVal sender As Object, _
        ByVal e As ProfileMigrateEventArgs)
        If Profile.GetProfile(e.AnonymousID).PostalCode <> "" Then
            Profile.PostalCode = _
                Profile.GetProfile(e.AnonymousID).PostalCode
        End If
    End Sub
    
    void Profile_MigrateAnonymous(Object sender, 
            ProfileMigrateEventArgs e)
    {
        if(Profile.GetProfile(e.AnonymousID).PostalCode != String.Empty)
        {
            Profile.PostalCode = 
                Profile.GetProfile(e.AnonymousID).PostalCode;
        }
    }
    

    Этот код возвращает профиль для анонимного пользователя и извлекает значение PostalCode. Затем он возвращает профиль для нового удостоверения пользователя и задает эквивалентное значение для этого удостоверения.

Тестирование миграции

Для тестирования миграции сначала настройте некоторые параметры в качестве анонимного пользователя. Затем войдите в систему и убедитесь, что значения сохранились.

Тестирование миграции

  1. Откройте страницу Profiles.aspx и нажмите CTRL + F5 для ее запуска.

    Элемент управления LoginName ничего не отображает, так как пользователь еще не вошел в систему.

  2. Если почтовый индекс не отображается на странице, то введите новый почтовый индекс и щелкните Задать почтовый индекс.

    Почтовый индекс для текущего анонимного удостоверения отображается на странице.

  3. Войдите в систему, используя имя пользователя и пароль, созданные в разделе "Миграция свойств профиля при входе в систему" ранее в этом пошаговом руководстве.

    Элемент управления LoginName отображает имя пользователя. Почтовый индекс, введенный анонимным пользователем, по-прежнему отображается, поскольку параметры почтового индекса были перенесены в профиль вошедшего в систему пользователя.

Следующие действия

В этом пошаговом руководстве были проиллюстрированы основные процедуры настройки и использования свойств Profile в веб-приложениях. В приложениях можно использовать свойства Profile для разных целей. В следующем списке предлагаются дополнительные области, где можно использовать свойства Profile:

См. также

Основные понятия

Общие сведения о свойствах профилей ASP.NET

Поставщики профилей ASP.NET