Klesh.Cn

concentrating on knowing more...

让.Net2.0的Membership使用已存在的Sql Server2000/2005数据库

  VS2005 ASP.NET配置工具可以很方便地配置和使用Membership功能,如果你有安装 Sql Server Express 的话,ASP.NET配置工具会帮你生成数据库及更改Web.Config文件以便使用membership的各种功能。

  但是如果没有安装 Sql Server Express 的话,或者是想使用已存在的数据库的话,你会发现ASP.NET配置工具根本就没办法帮你初始化非Sql Server Express数据库。这个时候,就要手动地进行MemberShip的配置工作了。

  首先,打开“Visual Studio 2005 命令提示”(在VS2005菜单里面的Visual Studio Tools里面能找到),运行aspnet_regsql.exe这个工具。然后按照屏幕提示,初始化数据库。

  完成数据库的初始化工作之后,就需要对Web.Config进行相应配置。首先,确保在connectionStrings节里面已经配置好可以连接到该数据库的ConnectionString。如:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <connectionStrings>
    <add name="northWindConn" connectionString="server=localserver;uid=sa;pwd=;Initial Catalog=northWind" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

  接下来,配置membership节和roleManager节,这两个节都拥有providers子节,可以为他们创建多个provider,每个provider都有connectionStringName的属性,这个属就是与上面connectionStrings相关联的。以下是示例:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <system.web>

    <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
      <providers>
        <clear />
        <add
          name="SqlProvider"
          type="System.Web.Security.SqlMembershipProvider"
          connectionStringName="northWindConn"
          applicationName="northWind"
          enablePasswordRetrieval="false"
          enablePasswordReset="true"
          requiresQuestionAndAnswer="true"
          requiresUniqueEmail="true"
          passwordFormat="Hashed" />
      </providers>
    </membership>

    <roleManager defaultProvider="SqlProvider"
     enabled="true"
     cacheRolesInCookie="true"
     cookieName=".ASPROLES"
     cookieTimeout="30"
     cookiePath="/"
     cookieRequireSSL="false"
     cookieSlidingExpiration="true"
     cookieProtection="All" >
      <providers>
        <add
          name="SqlProvider"
          type="System.Web.Security.SqlRoleProvider"
          connectionStringName="northWindConn"
          applicationName="northWind" />
      </providers>
    </roleManager>
  </system.web>
</configuration>

  .Net 2.0的MemberShip被设计为可以通地过一个数据库为多个应用程序提供MemberShip服务。不同的applicationName配置取得的资料是不同的,因此配置时需要注意前后提供的applicationName要一致。

  完成了以上两步,就可以通过VS2005自带的ASP.NET配置工具来进行角色,用户等的管理了。

posted on 2006-07-20 10:42 Klesh Wong 阅读(799) 评论(3)  编辑 收藏 网摘 所属分类: NET

Feedback

#1楼 2006-08-18 07:42 Alex C[未注册用户]

Hi Klesh, I like your articles. Do u have msn messenger? If u have one pls add me alex88000@hotmail.com to your list. Thanks!   回复  引用    

#2楼 2007-10-17 23:32 菜虫[未注册用户]

我最近用VS2005建了一个网站,使用的是SQL Server2005 Express数据库;

我把数据库设置为兼容SQL Server2000后上传到了SQL Server2000的数据库服务器中;

修改了链接字符串后,链接显示正常;

但登录和操作membership和role providers时就报错.

我在web.config中已经作了一些处理,仍不行,感到很困扰,难道SQL Server2000没有内置 Membership 和 role Providers 模型吗?

麻烦高手指教了.谢谢.

<remove name="ASPNETDBConnectionString1"/>
<add name="ASPNETDBConnectionString1" connectionString="Data Source=******;Initial Catalog=******;User ID=******;Password=******;Timeout=30;"
providerName="System.Data.SqlClient" />

<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider" >
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ASPNETDBConnectionString1" applicationName="/WebSite4" />
</providers>
</roleManager>
<authentication mode="Forms" />

<membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="15">
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ASPNETDBConnectionString1" applicationName="/WebSite4" />
</providers>
</membership>
  回复  引用    

#3楼[楼主] 2007-10-18 09:18 Klesh Wong      

@菜虫
出错信息是?
  回复  引用  查看    




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 455261




相关文章:

相关链接:

导航

统计信息

News

与我联系

搜索

 

常用链接

留言簿

我参加的小组

我参与的团队

我的标签

随笔分类

随笔档案

文章分类

新闻档案

收藏夹

链接

最新评论

阅读排行榜

评论排行榜