zoukankan      html  css  js  c++  java
  • ASP.NET 例程完全代码版(7)——2.0中实现自配置的成员角色管理库

    ASP.NET 例程完全代码版(7)——2.0中实现自配置的成员角色管理库
    作者: zyf0808 发表日期: 2006-05-12 10:01 文章属性: 原创 复制链接


        在ASP.NET 2.0 中,为我们提供了很好的成员即角色管理机制,可以方便地实现用户的注册及角色分配,对于基本的成员访问和角色控制进行了封装实现,但是,默认的情况下,这个用于提供成员即角色管理的数据库 aspnetdb 是要存储在 SQL Server 2005 的 Express 版本中的,下面通过建立个人站点的解决方案来讲述如何通过配置工具,实现 VS 2005 与 SQL Server 2000 的整合开发。
        首先,安装好 VS 2005 后,如果 File-->New-->Web Site-->Personal Web Site Starter Kit 然后直接 RUN 的话,肯定会出现错误,提示 An error has occurred while establishing a connection to the server.  When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified) 。但是,VS 给我们提供了很方便的使用工具,可以在命令行下使用 aspnet_regsql.exe 来指定默认使用的数据库服务器。它会为我们自动在配置的数据库服务器下生成 aspnetdb 这个用来管理成员即角色的库,这个工具可以在命令行下使用,也提供了 UI ,可以方便配置应用程序使用的数据库。aspnet_regsql

     
        在使用这个 Starter Kits 的时候,可以把 Personal 的库通过它提供的脚本,存储在 SQL Server 2000 中,而不用使用 AttachDBFilename 的方式。具体可以通过 web.config 来配置,如下:
    <connectionStrings>
        <add name="Personal" connectionString="Data Source=yourServer;Integrated Security=True;Initial Catalog=Personal" />
        <add name="SqlServices" connectionString="Data Source=yourServer;Integrated Security=SSPI;Initial Catalog=aspnetdb;" />
        <remove name="LocalSqlServer"/>
    </connectionStrings>
        默认情况下,使用的连接是 machine.config 中定义的 LocalSqlServer ,你可以 remove 掉,同时,也不使用默认的 Membership & roles 的 Provider,也需要将 machine.config 中的默认 Provider 去掉。因为在其中,有如下的配置:
     <roleManager>
        <providers>
           <add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        </providers>
    </roleManager>
    因为我们已经 remove 掉了默认的 LocalSqlServer 连接字符串,如果不 remove 掉 AspNetSqlRoleProvider 的话,会提示 The connection name 'LocalSqlServer' was not found in the applications configuration or the connection string is empty.
    具体的使用自定制的方式可以如下设置:
    <system.web>
        <roleManager enabled="true" defaultProvider ="AspNetRoleProvider">
          <providers>
            <remove name="AspNetSqlRoleProvider" />
            <add name="AspNetRoleProvider" connectionStringName="SqlServices"
                 type="System.Web.Security.SqlRoleProvider,System.Web, Version=2.0.0.0, Culture=neutral,    PublicKeyToken=b03f5f7f11d50a3a"
                applicationName="/" />
          </providers>
        </roleManager>
        <membership defaultProvider="AspNetMembershipProvider" userIsOnlineTimeWindow="20">
          <providers>
            <remove name="AspNetSqlMembershipProvider" />
            <add name="AspNetMembershipProvider"
                type="System.Web.Security.SqlMembershipProvider"
                connectionStringName="SqlServices"
                enablePasswordRetrieval="false"
                enablePasswordReset="true"
                requiresQuestionAndAnswer="true"
                passwordFormat="Hashed"
                applicationName="/" />
          </providers>
        </membership>
    </system.web>
       经过如此一番配置,你就可以使用 VS 2005 & SQL Server 2000 来实现成员访问和角色管理的开发了。呵呵,希望对刚介入 2.0 开发的朋友有所帮助。

  • 相关阅读:
    【转载】网站服务器运维记实:阿里云1核2G突发性能t5服务器突然变得卡顿
    【转载】C#中自定义Sort的排序规则IComparable接口
    【转载】C#将图片转换为二进制流调用
    【转载】ASP.NET MVC重写URL制作伪静态网页,URL地址以.html结尾
    Java通过反射机制修改类中的私有属性的值
    Android -- 分享功能和打开指定程序
    Java存储密码用字符数组
    java笔试题(3)
    Java中的String与常量池
    Android -- 距离感应器控制屏幕灭屏白屏
  • 原文地址:https://www.cnblogs.com/chinafine/p/599458.html
Copyright © 2011-2022 走看看