用代码创建 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"。
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 评论Feed: http://www.rainsts.net/feed.asp?q=comment&id=288

这篇日志没有评论。

发表评论
表情图标
[smile] [confused] [cool] [cry]
[eek] [angry] [wink] [sweat]
[lol] [stun] [razz] [redface]
[rolleyes] [sad] [yes] [no]
[heart] [star] [music] [idea]
UBB代码
转换链接
表情图标
悄悄话
用户名:   密码:  
验证码 * 请输入验证码