用代码创建 Membership、Profile、SessionState 等所需的数据库
[ 2006-08-15 15:32:04 | 作者: yuhen ]
[.net 2.0]
ASP.NET 2.0 新增了很多功能,诸如:会话状态、成员资格、Web 部件个性化和角色管理等。一般我们使用"aspnet_regsql.exe" 这个向导工具来创建所需的数据库,但在某些情况下我们可能需要使用代码来创建这些数据库(当然你也可以使用 aspnet_regsql.exe 命令行参数),比如安装程序、Web在线管理等。
幸好 .NET Framework 2.0 为我们提供了所需的目标 "System.Web.Management.SqlServices"。
其中 SqlFeatures 枚举类型提供了我们所要创建的目标。
All 所有功能。
Membership 成员资格功能。
None 无功能。
Personalization 个性化功能。
Profile 配置文件功能。
RoleManager 角色管理器功能。
SqlWebEventProvider Web 事件提供程序功能。
演示代码:
有几个小问题:
1. 创建多个目标时,枚举运算符应该使用 "或 |" 而不是 MSDN 文档中的 "与 &"。(MSDN 文档有误?)
2. 调用 Uninstall 后,有几个公用表(aspnet_Applications / aspnet_SchemaVersions / aspnet_Users)不会被删除,除非使用 SqlFeatures.All。
3. SqlServices 使用了 System.Data.SqlClient 名字空间下的对象,因此只能用于 Microsoft SQL Server。
-----------
SqlServices 除了上述功能,还可以:
1. 使用 InstallSessionState 方法在 SQL Server 数据库上 "安装/删除 ASP.NET 会话状态数据库"。
2. 使用 GenerateSessionStateScripts 方法创建 "安装/删除 ASP.NET 会话状态数据库" 所需的 SQL 脚本。
有关在 SQL Server 中保存会话状态,请参考 MSDN 文档。
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_aspnetcon/html/6d60d381-6521-4e1d-9089-da6464f2a9bc.htm
评论Feed: http://www.rainsts.net/feed.asp?q=comment&id=288
ASP.NET 2.0 新增了很多功能,诸如:会话状态、成员资格、Web 部件个性化和角色管理等。一般我们使用"aspnet_regsql.exe" 这个向导工具来创建所需的数据库,但在某些情况下我们可能需要使用代码来创建这些数据库(当然你也可以使用 aspnet_regsql.exe 命令行参数),比如安装程序、Web在线管理等。
幸好 .NET Framework 2.0 为我们提供了所需的目标 "System.Web.Management.SqlServices"。
public static class SqlServices
{
//安装数据库方法
public static void Install (
string database,
SqlFeatures features,
string connectionString
)
public static void Install (
string server,
string user,
string password,
string database,
SqlFeatures features
)
// 删除数据库方法
public static void Uninstall (
string database,
SqlFeatures features,
string connectionString
)
public static void Uninstall (
string server,
string user,
string password,
string database,
SqlFeatures features
)
// 创建安装或删除所需的 SQL 脚本
public static string GenerateApplicationServicesScripts (
bool install,
SqlFeatures features,
string database
)
}其中 SqlFeatures 枚举类型提供了我们所要创建的目标。
All 所有功能。
Membership 成员资格功能。
None 无功能。
Personalization 个性化功能。
Profile 配置文件功能。
RoleManager 角色管理器功能。
SqlWebEventProvider Web 事件提供程序功能。
演示代码:
// 安装
SqlServices.Install("test", SqlFeatures.Membership | SqlFeatures.Profile, @"server=(local);uid=sa;pwd=sa;database=test");
//SqlServices.Install("(local)", "sa", "sa", "test", SqlFeatures.Membership | SqlFeatures.Profile);
// 删除
SqlServices.Uninstall("test", SqlFeatures.Membership | SqlFeatures.Profile, @"server=(local);uid=sa;pwd=sa;database=test");
//SqlServices.Uninstall("(local)", "sa", "sa", "test", SqlFeatures.Membership | SqlFeatures.Profile);
// 在 WebPage 显示安装脚本
string s = SqlServices.GenerateApplicationServicesScripts(true, SqlFeatures.Membership, "test");
Response.Write(Server.HtmlEncode(s).Replace("\r\n", "<br>"));有几个小问题:
1. 创建多个目标时,枚举运算符应该使用 "或 |" 而不是 MSDN 文档中的 "与 &"。(MSDN 文档有误?)
2. 调用 Uninstall 后,有几个公用表(aspnet_Applications / aspnet_SchemaVersions / aspnet_Users)不会被删除,除非使用 SqlFeatures.All。
3. SqlServices 使用了 System.Data.SqlClient 名字空间下的对象,因此只能用于 Microsoft SQL Server。
-----------
SqlServices 除了上述功能,还可以:
1. 使用 InstallSessionState 方法在 SQL Server 数据库上 "安装/删除 ASP.NET 会话状态数据库"。
2. 使用 GenerateSessionStateScripts 方法创建 "安装/删除 ASP.NET 会话状态数据库" 所需的 SQL 脚本。
有关在 SQL Server 中保存会话状态,请参考 MSDN 文档。
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_aspnetcon/html/6d60d381-6521-4e1d-9089-da6464f2a9bc.htm
[最后修改由 yuhen, 于 2006-08-15 16:46:10]
评论Feed: http://www.rainsts.net/feed.asp?q=comment&id=288
这篇日志没有评论。






