ASP.NET Lab

The Best Web, The Best Future

博客园 首页 新随笔 订阅 管理

在多数应用程序中,你需要存储并使用针对用户唯一的信息。在用户访问网站的时候,你可以使用被存储的信息来为用户呈现一个已个性化的 Web 应用程序版本。对应用程序进行个性化需要许多的元素:你必须使用一个唯一的用户标识符来存储信息,从而在用户再次访问的时候能够对用户进行识别,然后根据实际需要来获取用户信息。要对应用程序进行简化,你可以使用 ASP.NET 档案特征,它能够为你完成所有的这些任务。

ASP.NET 档案特征把信息与单独的用户进行关联,并且把信息存储在一个持续保持的格式中。档案允许你在不需要创建并维护自定义数据库的情况下对用户信息进行管理。另外,ASP.NET 档案特征使用了一个能够从应用程序中的任何位置都能够被访问到的强类型化的 API 来使得用户信息变得可用。

你可以使用档案来存储任何类型的对象。档案特征提供了一个通用的存储特征并允许你在仍然需要数据以类型安全的方式而可用的时候对几乎任何种类的数据进行定义并维护。

ASP.NET 档案如何工作

要使用档案,你首先需要在 ASP.NET Web 应用程序中更改配置文件来启用档案。作为配置的组成部分,你可以指定一个档案提供者(在底层完成低级别档案数据的存储与获取任务的类)。你既可以使用 NET Framework 所提供的档案提供者(在 SQL Server 中存储档案数据),也可以创建并使用在文章[实现档案提供者]中被描述的自定义档案提供者。你可以指定一个连接到被选择数据库的 SqlProfileProvider 实例,或者你可以使用在本地 Web 服务器中存储档案数据的默认 SqlProfileProvider 实例。

你可以通过为需要进行维护的属性值定义一个列表的方式来配置档案特征。例如,你可能需要存储用户的邮政编码,从而应用程序能够提供特定的区域信息(如天气报告)。在配置文件中,你将定义一个名为 PostalCode 的档案属性。配置文件中的 profile 配置段应该如下所示:

<profile>
  <properties>
    <add name="PostalCode" />
  </properties>
</profile>

在应用程序运行的时候,ASP.NET 会创建一个 ProfileCommon 类(动态被生成的 ProfileBase 继承类)。动态的 ProfileCommon 类包括了在档案属性定义(在应用程序配置中被指定)中被创建的属性集。然后这个动态的 ProfileCommon 实例被设置成当前 HttpContext 中的 Profile 属性值并为应用程序中的页面可用。

在应用程序中,你应该对需要被存储的值或值的集合进行存储并把它们指派到被定义的档案属性中。例如,应用程序的主页可能包含了一个提示用户输入邮政编码的文本框。因此,在用户输入邮政编码的时候,你就需要设置一个 Profile 属性来存储当前用户的值,如下范例所示:

Profile.PostalCode = txtPostalCode.Text;

在为 Profile.PostalCode 设置值的时候,为当前用户所设置的值会自动被得到存储。你不需要编写任何代码来检测当前用户是否已经明确地把值存储到数据库中,因为档案特征会自动为你完成这些任务。

在你需要使用值的时候,你可以通过与设置值时相同的方式来对它进行获取。例如,如下所示的代码范例说明了应该如何调用一个名为 GetWeatherInfo 的虚构功能,并与被存储在档案中一样把当前用户的邮政编号作为参数进行传递:

weatherInfo = GetWeatherInfo( Profile.PostalCode );

你不需要明确地检测用户是否完成了任何数据库查找任务。在简单地从档案中获取出属性值的时候就会导致 ASP.NET 完成必需的动作来识别当前用户并查找被持续保持在档案存储中的值。

posted on 2007-01-25 22:24  Laeb  阅读(224)  评论(0编辑  收藏  举报