在许多应用程序中,需要存储并使用对用户唯一的信息。用户访问站点时,您可以使用已存储的信息向用户显示 Web 应用程序的个性化版本。个性化应用程序需要大量的元素:必须使用唯一的用户标识符存储信息,能够在用户再次访问时识别用户,然后根据需要获取用户信息。若要简化应用程序,可以使用 ASP.NET 配置文件功能,该功能可为您执行所有上述任务。
ASP.NET 配置文件功能将信息与单个用户关联,并采用持久性的格式存储这些信息。通过配置文件,可以管理用户信息,而无需创建和维护自己的数据库。此外,通过使用可从应用程序中的任何位置访问的强类型 API,就可以借助 ASP.NET 配置文件功能使用相关的用户信息。
可以使用配置文件存储任何类型的对象。配置文件功能提供了一项通用存储功能,使您能够定义和维护几乎任何类型的数据,同时仍可用类型安全的方式使用数据。
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 可以执行必要的操作,从而标识当前用户并查找持久性配置文件存储区中的值。