日期:2010-06-19 浏览次数:20514 次
摘要:本文介绍如何通过创建三层结构式 ASP.NET 2.0 应用程序来维护 IIS 生产服务器中的成员身份数据库和角色数据库。
简介
成员身份编辑器
Microsoft Visual Studio 2005 版本中没有用于维护 Microsoft IIS 中的成员身份数据库和角色数据库的“现成”解决方案。将开发环境中的应用程序移至 IIS 生产服务器时这就会是个问题。Microsoft 提供的实用程序 ASP.NET Web Configuration 只能在非生产的开发环境中运行。本文及其关联代码将通过对成员和角色管理实现三层式解决方案,同时使用 Microsoft ASP.NET 标准工具,来解决这个问题。这意味着该实用程序将可在任何 ASP.NET 2.0 环境(包括 IIS)中运行。该解决方案十分灵活,可以轻易添加到任何现有的 ASP.NET 2.0 网站项目中。
该解决方案的层定义如下。第一层 ASP.NET 页面(也称为表示层)通过对象数据源与两个业务对象进行连接。这些业务对象起中间层作用,是成员和角色的包装程序。第三层(即后端)由 ASP.NET 提供的成员身份和角色管理器 API 组成。中间层对象可以轻松地加入任何 ASP.NET 2.0 项目,并且几乎无需进行任何更改就可以直接使用。
本文深入地介绍了中间层(即数据对象及其关联 ObjectDataSource)的实现。接着,介绍了如何在使用 Microsoft SQL Server Express 2005(捆绑有 Visual Studio 2005)的 ASP.NET Web 项目中使用这些对象。但是由于 Microsoft 提供的成员身份 API 使用其提供商的技术,因此此处介绍的解决方案与数据库无关。从 LDAP、SQL Server 或 Oracle 即可轻松获得成员身份和角色信息。
采用的技术
ObjectDataSource
定义了两个 ObjectDataSource 实例。一个是有关成员身份数据(用户名、创建日期、批准状态等)的,另一个是有关角色(管理员、朋友等)的。这两个数据源均完全填充了所有数据访问方法,即两者都包含执行插入、更新、删除和选择的 Member 函数。两个 ObjectDataSource 实例都返回 Generic List 类型,这意味着在 GridView 中,列名将自动设置为 ObjectDataSource 的属性值名。此外,还实现了自定义排序,以便用户可以单击 GridView 中的列标题来根据需要对数据进行正向或反向排序。
SQL Server Express 2005 和 Web.Config
成员身份数据库和角色数据库的数据提供程序源是 SQL Server Express 2005。为实现这一点,需要在 web.config 文件中设置相应的条目。本文稍后将对如何从头开始设置新项目进行简要的介绍。web.config 文件中未提及 SQL Server Express 2005 的连接字符串,因为它已在 Microsoft .NET 2.0 Framework 的默认部分 Machine.Config 文件中定义。
支持 IIS(5.1 和 6.0)
Web 服务器可以为 5.1 版,也可以为 6.0 版。若要对登录 Web 应用程序的多个用户进行测试,必须使用 IIS。内置开发 Web 服务器不能正确保持各不同登录用户的状态。内置开发 Web 服务器不能正确保持各不同登录用户的状态。尽管可以使 Asp.net Web 配置工具与 IIS 一起工作,但尚未完成实现这一目的所必需的附加安全工作。
GridView 控件
GridView 用于显示成员身份和角色的数据。如上文所述,由于使用了 ObjectDataSource 的 Generic 类型,GridView 的列名将自动以 ObjectDataSource 的属性值命名。如果没有使用 Generic 类型,则列名恢复为无意义的默认值,必须手动逐个进行编辑。
应用程序和项目
运行此实用程序所需的项目非常简单,并且是独立的。项目文件可以下载,包含功能完整的示例。由于用户和角色没有直接访问数据库的权限,因此所要做的事情就是获取三个数据对象(MembershipDataObject.cs、MembershipUserSortable.cs 和 RoleDataObject.cs,请参见图 2)。
图 2:成员身份编辑器项目
SamplePages 文件夹中有几个其他的示例,演示了前面提及的模块的用法。图 1 中显示的 Membership.aspx 即是其中一例,它可用于选择、更新、插入及删除成员和角色,以及为成员分配角色。
使用已有工作成员身份模块的工作 ASP.NET 2.0 应用程序时,无需对这些页面进行已做配置之外的外部配置。可以将这些文件直接复制到项目中,复制后即可使用。
如果是第一次在应用程序中实现成员身份和角色管理,则创建使用这些对象的解决方案的过程如下,
1. 使用 Visual Studio 2005 创建类型为 ASP.NET 网站的新 Web 项目。
2. 单击菜单上的 Website / ASP.NET Configuration(网站/ASP.NET 配置)。
3. 按照向导提示的步骤(1 至 7)进行操作来创建一些示例用户和角色。这将在当前项目中有效地创建有效 web.config 文件,其中包含能够启动并运行成员管理的充足信息。默认情况下,它将在其默认配置中使用 SQL Server Express 2005。
4. 在项目中添加三个 .cs 文件,然后添加示例 .aspx 页面作为示例。
ObjectDataSource 详细信息
采用 ObjectDataSource 技术可以创建作用与 SqlDataSource 非常相似的数据源,即它提供允许从永久数据存储区(例如数据库)中进行选择、更新、插入和删除记录(或类似记录的对象)的界面。本文以下各部分将讨论 ObjectDataSource 用于操作成员身份的对象(即类文件)。其在项目中的名称为 MembershipUserODS.cs。
类 (MembershipUserODS)
由于是通过 Microsoft 成员身份 API 检索数据,因此使用 ObjectDataSource 来解决问题。第一步是创建独立的类,该类对 MembershipUser 进行包装,以便它可以与 ObjectDataSource 关联。下例中介绍了一组需要实现的典型方法,本文以下各部分将介绍如何实现每个成员函数。本文省略了许多细节,但本文附带的源代码中包含这些细节。
[DataObject(true)
public class MembershipUserWrapper {
[DataObjectMethod(DataObjectMethodType.Select, true)]
static public Collection<MembershipUserWrapper> GetMembers(string
sortData) {
return GetMembers(true, true, null, sortData);
}
[DataObjectMethod(DataObjectMethodType.Insert, true)]
static public void Insert(strin