如今,个性化是大多数web应用程序的一个关键部分。techrepublic和amazon就是典型的例子,它们能够记住用户的某些特征。应用asp.net 1.x实现这一功能需要完成一些额外的工作,并要使用session对象,但2.0版本简化了个性化过程。
个性文件
asp.net 2.0 profile系统允许你轻松存储用户的相关信息。你定义与每名用户有关的属性,并将它存储在他们的个性文件中。个性文件数据可以用程序方便地访问。与其它保存文件一样,它必须被存储,且个性文件默认使用sql server。
profile系统以提供程序模型为基础,特殊的profile提供程序负责将属性值序列化和解序列化到某个数据仓库中。.net framework默认使用一个sqlprofileprovider类,它使用一个sql server数据库表来存储数据。
系统配置
在使用asp.net 2.0的个性文件特性之前,必须对web服务器进行正确配置,使其支持这一特性。默认情况下,个性文件特性使用一个sql server终端,但你也可以建立自己的提供程序。在本文中,我主要讨论标准的sql server终端,它使用默认的sqlprofileprovider类。
sql server支持版本7.0、2000和2005。要配置一个支持sql server的系统,首先应配置数据库服务器,最后是asp.net平台。
.net framework 2.0中包含正确配置asp.net环境的工具。如果你使用了sql server 2005精简版和visual studio,就不必进行配置。如果没有应用上述程序,第一步是注册一个sql server连接。使用随.net framework安装的命令行工具aspnet_regsql.exe即可完成此项操作。在我的机器上,此工具的路径为:
c:windowsmicrosoft.netv2.0.50727aspnet_regsql.exe
这个工具中包含大量的选项,你可以通过命令行选项(-?)详细阅读。在我的开发系统中,我使用现有的sql server 2000。下面的命令通过在指定服务器上建立必要的数据库来进行环境配置。
aspnet_regsql.exe –a p –e –s database_server_name
命令行开关e告诉系统用当前用户证书进行验证。开关s允许你指定数据库服务器名称。开关a说明增加哪个选项,后面的p指明增加个性文件支持。执行此命令即可建立一个sql server数据库。数据库的默认名称为aspnetdb,但你也可以用命令行开关d撤销它,开关d允许你指定一个现有的数据库。
现在已建立一个sql server环境,接下来应对asp.net 2.0进行配置,使其利用连接和个性文件。进入iis管理界面,查看iss网站(web sites)属性并选择asp.net标签,即可激活asp.net环境属性。选择asp.net标签上的编辑配置(edit configuration)按钮。验证(authentication)标签包含一个角色(roles)区,其中的角色管理(role management)被激活(应查看这一点)。默认的sql server(localsqlserver)连接字符串在通用(general)标签中指定。我的开发环境使用下面的连接字符串:
data source= database_server_name;integrated security=sspi;
initial catalog=aspnetdb;user instance=false
将这些改变保存在asp.net环境中,把它连接到前面配置的sql server实例中。配置好平台后,你就可以开始执行。
定义元素
个性文件中使用的数据元素在web.config文件中建立与保存(即被保存的数据值在那个文件中定义)。实际值(对不同用户而言)保存在一个终端数据仓库中。你可以指定每个属性的名称、数据类型和数据序列化的方式。
属性的数据类型与.net中的有效标准数据类型相同。序列化选项一般依赖于被存储的数据类型,但共有四个序列化选项:
在属性元素中定义的个性文件元素包含在一个个性文件元素中,它位于web.config文件的system.web部分。web.config包括一个应用前面个性文件支持的个性文件片断。它将使用两个个性文件项目——firstname和lastname——它们保存字符串值并允许匿名用户。
匿名用户和认证用户均可应用个性文件特性。前面的web.config文件使用个性文件元素的allowanonymous属性,并激活应用程序匿名支持(anonymousidentification元素),从而指定匿名支持。
使用代码
正确配置环境后,就可以方便地在你的.net代码中应用个性文件元素。中的简单c#代码使用个性文件元素来存储并显示数据值,它利用包含在system.web命名空间中的profile类。代码中包含在代码分离文件后的asp.net文件。
包含定制代码的代码分离(codebehind)。第一个按钮存储个性文件域中每个文本域的值。第二个按钮从个性文件域中恢复值,并用这些值填充文本域。
个性化更加简化
个性化只是asp.net 2.0许多新特性中的一个。经过几个配置步骤,你就可以通过标准的web.config文件和profile类编码,方便地为应用程序增加个性化特性。
tony patton拥有丰富的java、vb、lotus及xml方面的知识,是一个专业的应用程序开发人员。
新闻热点
疑难解答
图片精选