(搬运).net起步 (用配置文件属性维护网站用户信息 2)

来源:互联网 发布:qq空间软件免费版 编辑:程序博客网 时间:2024/05/28 16:08

ASP.NET 的配置文件属性允许应用程序跟踪并永久性存储用户特定的信息。 例如,用户可以指定邮政编码或最满意的配色方案,然后应用程序可以存储该信息并从应用程序的任何位置检索此信息。 ASP.NET 自动将当前用户与为他们的用户帐户存储的个人信息匹配 - 无论是匿名用户还是登录用户。

实验目的:

本次实验演示如何将配置文件属性添加到应用程序中,以及如何使用配置文件属性为网站的访问者创建个性化体验。

在本实验中,您将了解如何执行以下操作:

 配置应用程序以使用配置文件属性。
 定义要为用户维护的简单和复杂的配置文件属性。
 为匿名用户和登录用户维护配置文件属性。
 在应用程序中设置和检索配置文件值。

系统必备:

为了完成本次实验,您需要:

 Microsoft Visual Studio。
 Microsoft .NET Framework。
 Microsoft SQL Server Standard 或 SQL Server Express。
在本演练中创建的配置文件属性信息将存储在 SQL Server 数据库中。
 在浏览器上启用 Cookie。

PS:如果应用程序配置为不使用 Cookie,ASP.NET 配置文件属性可以在没有Cookie 的情况下工作。但在本演练中,将使用配置文件属性的默认配置设置,此默认设置使用 Cookie。

创建和配置网站

创建网站。

配置配置文件属性

首先,配置应用程序以启用配置文件属性。然后,定义要为每个用户跟踪的第一个属性。此属性名为 PostalCode ,将同时为匿名用户和登录用户跟踪此属性。

PostalCode 属性配置网站

1. 在 “解决方案资源管理器”中,确定网站是否已有 Web.config 文件。
如果网站具有 Web.config 文件,请打开该文件。 如果网站没有 Web.config 文件,请执行以下步骤:
a. 右击网站的名称。
b. 单击 “添加新项”。
c. 在模板列表中,单击 “Web 配置文件”。
d. 单击 “添加”。
一个名为 Web.config 的新文件即会添加到网站,并在编辑器中打开。

2. 将以下 profile 元素作为 system.web 元素的子项添加到 Web.config 文件:

  <system.web>    <compilation debug="true" targetFramework="4.5.2"/>    <httpRuntime targetFramework="4.5.2"/>    <anonymousIdentification enabled="true"/>    <profile>      <properties>        <add name="PostalCode"             type="System.String"             allowAnonymous="true"/>      </properties>    </profile>  </system.web>
注意:Web.config 文件中的元素区分大小写。 因此,请确保按显示准确复制或键入元素。
3. 您已经添加了以下元素:
o anonymousIdentification 元素,此元素指定配置文件属性是只用于登录(经过身份验证)用户还是同时用于登录用户和匿名用户。
在本例中,已经将 enabled 设置为 true。 因此,将同时为登录用户和匿名用户跟踪配置文件属性信息。
o properties 元素,此元素包含将定义的所有配置文件属性。
o add 元素,此元素定义新的 profile 元素。
在本例中,已经定义了一个名为 PostalCode 的 profile property。
定义配置文件属性时,使用 .NET Framework 类型的类名指定此属性的数据类型。 还要指定是否为匿名用户跟踪配置文件属性。 启用匿名身份验证后,还可以指定是否单独为匿名用户跟踪配置文件属性。为要定义的每个其他配置文件属性创建一个新的 add 元素。


设置和获取 PostalCode 属性

在本节中,将创建一个页面,此页面显示如何设置和获取在上一节中定义的 PostalCode 值。

创建设置和获取 PostalCode 属性的页面

1. 将新网页添加到名为 Profiles.aspx 的网站。 确保选中了 “将代码放在单独的文件中”复选框。

2. 打开 Profiles.aspx 并切换到 “设计”视图。

3. 从 “工具箱”的 “标准”组中,将在下表中列出的控件拖动到页面上,然后按照说明设置它们的属性。



4. 双击 “设置邮政编码”按钮,为该按钮的 Click 事件添加处理程序。

5. 在 SetPostalCodeButton_Click 处理程序中,添加用于设置 PostalCode 配置文件属性的代码,如下例所示:(using System.Web.Profile;

    protected void SetPostalCodeButton_Click(object sender, EventArgs e)    {        Profile.PostalCode = Server.HtmlEncode(PostalCodeTextBox.Text);        PostalCodeLabel.Text = Profile.PostalCode;    }
如果启用用户配置文件属性,ASP.NET 将动态创建名为 Profile 的属性,此属性将用户配置文件添加到当前上下文。 然后,可以通过 Profile.PostalCode 使用各个配置文件属
性。

PS:Server.HtmlEncode方法:对一段指定的字符串应用 HTML 编码。

注意:

如果当前不是新建网站,而是新建项目,则在.cs文件中的方法里去获取profile属性的时候需要这样写:HttpContext.Current.Profile.GetPropertyValue("test");或者在项目文件的aspx文件中写代码获取的话是可以直接使用Profile.test来获取,如下所示:


6. 向 Page_Load 处理程序添加用于显示 Profile.PostalCode 的代码,如下例所示:

    protected void Page_Load(object sender, EventArgs e)    {        PostalCodeLabel.Text = Profile.PostalCode;    }
每次请求页面时,此代码将显示 Profile.PostalCode值。

测试 PostalCode 配置文件属性
现在可以测试在上一节中定义的 PostalCode 属性。 首先以匿名用户的身份进行操作。 ASP.NET 将在后台为您分配一个唯一的匿名 ID,此 ID 存储在计算机的某个 Cookie
中。 ASP.NET 可以使用此匿名 ID 设置和获取您特有的值。注意:如果正在使用已启用成员资格的现有网站,请确定您已注销。

测试 PostalCode 属性:
1. 右击“Profiles.aspx”,再单击 “设为起始页”。
2. 按 Ctrl+F5 运行 Profiles.aspx 页。
首次向站点发出页面请求时,可能需要一段时间才能显示页面,这是因为 ASP.NET 会创建用于存储配置文件信息的 SQL Server 数据库。
3. 在框中键入邮政编码,然后单击 “设置邮政编码”。
输入的邮政编码即会在 Label 控件中显示。
4. 关闭浏览器以关闭当前会话。
5. 按 Ctrl+F5 再次运行 Profiles.aspx 页。
先前输入的邮政编码会在 Label 控件中显示。
前面过程中的最后一步演示了 ASP.NET 存储 PostalCode 值。 再次访问此页面时,ASP.NET 将根据您独特的匿名 ID 读取 PostalCode 值。

定义复杂属性

在本实验前面的“设置和获取 PostalCode 属性”一节中,创建了名为 PostalCode 的简单属性,此属性作为字符串存储。 在本节中,您将定义名为 FavoriteURLs 的属性,此属性为集合。 ASP.NET 可以存储任何类型的配置文件属性,但定义复杂的配置文件属性时,您必须提供其他信息。

定义 FavoriteURLs 属性

1. 打开 Web.config 文件。
2. 将名为“FavoriteURLs”元素的新属性添加到在本演练前面的“配置配置文件属性”一节创建的  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>
现在已添加名为 FavoriteURLs 的新配置文件属性。 对于不属于简单类型(如字符串或整数)的配置文件属性,必须指定完全限定类型。 在此处要指定配置文件属性将是
一个保存字符串的集合。

3. 保存并关闭 Web.config 文件。

设置和获取 FavoriteURLs 属性
使用作为集合的 FavoriteURLs 属性的方法与使用任何上下文中的集合颇为相似。 在实验的此部分中,将添加用户可以在其中键入 URL 的 TextBox 控件,从而更新在本实验前面的“设置和获取 PostalCode 属性”一节创建的 Profiles.aspx 页。 用户单击 “添加”时,URL 即会添加到 FavoriteURLs 属性中。 将在下拉列表框中显示收藏的 URL 的当前列表。

设置和获取 FavoriteURLs 属性

1. 在“Profiles.aspx”页上,添加以下控件并如下表所述设置其属性。


2. 双击 “添加 URL”按钮,为该按钮的 Click 事件添加处理程序。

3. 在 AddURLButton_Click 处理程序中,添加用于向列表添加 URL 的代码,如下例所示:

    protected void AddURL_Click(object sender, System.EventArgs e)    {        String urlString = Server.HtmlEncode(FavoriteURLTextBox.Text);        if (Profile.FavoriteURLs == null)        {            Profile.FavoriteURLs = new System.Collections.Specialized.StringCollection();        }        Profile.FavoriteURLs.Add(urlString);        DisplayFavoriteURLs();    }
PS:



System.Collections.Specialized 命名空间

4. 在 Page_Load 处理程序中,添加用于显示 URL 列表的代码,如下例所示:

    void Page_Load(object sender, System.EventArgs e)    {        labelPostalCode.Text = Profile.PostalCode;        DisplayFavoriteURLs();    }

5. 添加下面的子例程以更新 ListBox 控件中 URL 的显示。

    void DisplayFavoriteURLs()    {        FavoriteURLsListBox.DataSource = Profile.FavoriteURLs;        FavoriteURLsListBox.DataBind();    }
PS:


ListBox属性

测试 FavoriteURLs 配置文件属性
现在可以测试 FavoriteURLs 属性。
测试 FavoriteURLs 属性
1. 若要运行 Profiles.aspx 页,请按 Ctrl+F5。
ListBox 控件中最初没有任何值。
2. 在框中键入一个 URL,然后单击 “添加”。
URL 即会添加到 ListBox 控件中。
3. 重复前面的步骤以添加另一个 URL。
4. 关闭浏览器。
5. 若要再次运行 Profiles.aspx 页,请按 Ctrl+F5。
请注意, ListBox 控件已经用关闭浏览器前输入的 URL 进行了填充。

登录过程中迁移配置文件属性

如果某个用户首先以匿名用户身份访问网站,然后登录,您可能需要保留用户为匿名身份时建立的属性设置。典型的示例是:在购物网站中,用户可能先以匿名用户身份浏览,并将物品添加到购物车,然后登录以付款。若要在用户登录时保留其值,请将用户从当前匿名用户配置文件迁移到他们作为登录用户(经过身份验证)时的用户配置文件。
在本节中,迁移用户的 PostalCode 设置。 必须有一个已经配置为使用用户标识且有登录页面的网站。 如果尚未将正在使用的网站配置为支持成员资格,请使用以下过程将其启用。 如果网站已经支持成员资格,可以转至下一节。

配置网站以支持成员资格

1. 在 Visual Studio 中,在 “项目”菜单中单击 “ASP.NET 配置”。出现“管理工具”。
2. 单击 “安全”选项卡。
3. 在 “用户”下,单击 “选择身份验证类型”。
4. 选择 “通过 Internet”,然后单击 “完成”。“通过 Internet”选项指定应用程序将使用 Forms 身份验证,意味着用户将使用登录页面登录应用程序。
5. 在 “安全”选项卡的 “用户”下,单击 “创建用户”,然后创建用户帐户。可以使用任何名称和密码,但请确定记住了使用的名称和密码。 对于电子邮件地址,请使用自己的邮件地址。 (本演练中将不会发送电子邮件。)
6. 定义用户帐户后,关闭网站管理工具。
7. 打开 Profiles.aspx 页。
8. 从 “工具箱”的 “登录”组中,将 Login 控件和 LoginName 控件拖动到页面上。登录时无需使用 LoginName 控件,但此控件有助于查看是否已登录。

创建迁移处理程序

若要将匿名用户的设置迁移到登录用户的设置,必须在用户标识更改时执行迁移。 为此,ASP.NET提供了 MigrateAnonymous 事件;在 MigrateAnonymous 事件的处理程序中,可以传输要保留的设置。

创建迁移处理程序

1. 在 “解决方案资源管理器”中,右击网站的名称,然后单击 “添加新项”。
2. 在模板列表中,单击 “全局应用程序类”,然后单击 “添加”。无需输入名称,因为文件的名称始终为 Global.asax。
3. 键入以下代码,以便为 MigrateAnonymous 事件创建新的处理程序。

    public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args)    {        if (Profile.GetProfile(args.AnonymousID).PostalCode != String.Empty)        {            Profile.PostalCode = Profile.GetProfile(args.AnonymousID).PostalCode;        }    }
此代码获取匿名用户的用户配置文件,并提取 PostalCode 值。 然后,它获取新用户标识的配置文件,并为该标识设置等效值。

测试迁移

为了测试迁移,首先以匿名用户身份进行某些设置。 然后,登录并查看相关值是否保留。

测试迁移

1. 打开 Profiles.aspx 页,然后按 Ctrl+F5 运行该页。
LoginName 控件不显示任何内容,因为您尚未登录。
2. 如果页面上没有显示邮政编码,键入新的邮政编码,然后单击 “设置邮政编码”。
当前匿名标识的邮政编码即会在页面上显示。
3. 使用在本演练前面的“登录过程中迁移配置文件属性”一节中创建的用户名和密码登录。
LoginName 控件将显示您的用户名。 而且以匿名用户身份输入的邮政编码仍然显示,
因为此邮政编码设置已经迁移到您的登录用户配置文件。

后续步骤

本演练演示在 Web 应用程序中配置和使用 profile 属性的基本过程。 可以使用 profile 属性在应用程序中执行多种任务。 

下表列出了可能要使用 profile 属性的其他区域:
 将 profile 属性组成一组,因为这更易于将配置文件属性作为一个单元使用。
例如,可以将名为 Street、 City 和 PostalCode 的 profile 属性归入名为 Address 的组中。
 创建使用 profile 属性管理的自定义类型(如购物车)。
 选择不同的配置文件提供程序。
在本演练中,将 profile 值存储在 SQL Server 数据库中。 在支持大量用户的生产应用程序中,最好将 profile property 数据存储在使用 SqlProfileProvider 类的SQL Server 数据库中。
 另外,可以创建一个自定义配置文件提供程序,此提供程序使用您自己定义的格式和存储介质存储信息。

阅读全文
0 0
原创粉丝点击