关于asp.net:Roles.CreateRole()在App_Data中创建一个新数据库

Roles.CreateRole() creates a new database inside App_Data

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

我有这样的连接字符串:

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

和这样定义的成员资格提供程序:

1
2
3
4
5
6
7
8
9
10
<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创建一个新数据库。


如果要使用角色,则需要配置"角色管理器"部分。

可能是您正在拾取继承的RoleManager部分,该部分使用了不同的连接字符串。


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<membership>
      <providers>
        <clear />
       
      </providers>
    </membership>


<roleManager enabled="true">
      <providers>
        <clear />
       
       
      </providers>
    </roleManager>

Mansoor Gee \\'s的答案提供了一个很好的模板。
这是指向文档的链接,这些文档说明了如何在web.config中实现什么以及如何实现以启用RoleManager:

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

希望这会为将来的读者添加一些背景信息,因为我初次遇到此答案时需要一些信息。