【问题标题】:Roles.CreateRole() creates a new database inside App_DataRoles.CreateRole() 在 App_Data 中创建一个新数据库
【发布时间】:2011-10-26 09:28:01
【问题描述】:

如果我的默认成员资格提供程序设置为使用与实际 SQL Server 的连接,Roles.CreateRole("admin")App_Data 内创建新本地数据库的原因可能是什么?

我有一个这样的连接字符串:

<connectionStrings>
  <add name="MembershipDbConnection" 
     connectionString="Server=.;Initial Catalog=aspnetdb;User Id=*;Password=*" />
</connectionStrings>

以及这样定义的成员资格提供者:

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
  <providers>
    <clear />
    <add
      name="SqlProvider"
      type="System.Web.Security.SqlMembershipProvider"
      connectionStringName="MembershipDbConnection"  <-- this is the connection
      />
  </providers>
</membership>

奇怪的是,我的 SQL Server 中有一个 aspnetdb 数据库(填充有表),如果我使用 Membership.GetAllUsers(),我可以毫无问题地获取该表中的用户。登录也按预期工作。但是Roles.CreateRole 会创建一个新数据库。

【问题讨论】:

    标签: asp.net asp.net-membership roles membership-provider


    【解决方案1】:

    如果您想使用角色,您需要配置角色管理器部分。很可能您正在选择使用不同连接字符串的继承 RoleManager 部分。

    【讨论】:

    • +1 谢谢。有一行 &lt;roleManager enabled="true" /&gt; 没有明确设置提供程序。
    【解决方案2】:

    我认为您没有在 Web.Config 的“membership”和“roleManager”标签中提供“applicationName”属性。这是一个例子:-

    <membership>
          <providers>
            <clear />
            <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MembershipDbConnection"  applicationName="/" />
          </providers>
        </membership>
    
    
    <roleManager enabled="true">
          <providers>
            <clear />
            <add connectionStringName="MembershipDbConnection" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
            <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
          </providers>
        </roleManager>
    

    【讨论】:

      【解决方案3】:

      Mansoor Gee 的回答提供了一个很好的模板。 以下是关于应该在 web.config 中实现什么以及如何实现以启用 RoleManager 的文档链接:

      http://msdn.microsoft.com/en-us/library/vstudio/ms164660(v=vs.100).aspx

      希望这将为未来的读者增加一些背景信息,因为当我第一次遇到这个答案时,我需要一些背景信息。

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
      • @Sam 我是,好主意,我会尝试修改我的答案,以更好地解释此链接的(希望)有用性。感谢您的提示!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      相关资源
      最近更新 更多