SqlRoleProvider无法连接到DB

时间:2010-07-06 13:07:02

标签: asp.net authorization roles

我使用标准SqlRoleProvider对角色进行了以下配置,但是当我尝试在wweb站点管理工具中打开安全性页面时出现错误:

  <roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
    <providers>
      <remove name="AspNetSqlRoleProvider"/>
      <add name="AspNetSqlRoleProvider"
           type="System.Web.Security.SqlRoleProvider"
           connectionStringName="PoyntingInstallationConnectionString"
           applicationName="/" />
    </providers>
  </roleManager>

数据库具有所有角色表等。

1 个答案:

答案 0 :(得分:1)

确保{。1}}在您的web.config中,配置正确,并指向包含您的表的数据库。

角色将是aspnet_Roles表中的条目,而不是数据库角色。并且没有默认角色,因此当您第一次运行脚本时,表应该为空。

编辑:您能否提供有关如何创建auth DB的更多详细信息?即你是直接运行aspnet_regsql工具,还是单独生成和运行脚本?

编辑2 :aspnet_regsql工具很容易运行 - 它位于.NET Framework v2.0文件夹中。 (默认位置C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727)

可以使用一系列参数从命令行运行,或者如果在没有参数的情况下运行它,它将打开一个向导逐步指导您的参数。请注意,使用该向导,即使您不打算使用它们,也可以获得对所有成员资格提供程序功能(配置文件,个性化,Web事件......)的支持。

我建议您运行它,然后将结果与现有数据库进行比较。有人运行该工具然后只是将表复制到另一个数据库而没有意识到还需要一堆其他东西吗?我刚尝试从命令行和向导运行该工具,它生成了所有角色,过程等。

如果运行正确,你应该有一堆表(至少6个),存储过程(大约有十几个 - 我有35个)和DB角色(至少6个),名称以PoyntingInstallationConnectionString开头,以及一组名称以aspnet_开头的视图(至少5个)。如果您遗漏了这些中的任何一部分,提供商将无法工作。

我通常从命令行运行它,这样我才能获得成员资格和角色。这将减少相当多的噪音,但也是为什么我的数字有点模糊。 :)