Roles.CreateRole () создает новую базу данных внутри App_Data - PullRequest
1 голос
/ 26 октября 2011

В чем может быть причина Roles.CreateRole("admin") создания новой локальной базы данных внутри App_Data, если мой поставщик членства по умолчанию настроен на использование соединения с реальным SQL Server?

У меня есть строка подключения, подобная этой:

<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 создает новую базу данных.

Ответы [ 3 ]

4 голосов
/ 26 октября 2011

Вам необходимо настроить раздел «Менеджер ролей», если вы хотите использовать роли.Вероятно, вы выбираете унаследованный раздел RoleManager, который использует другую строку подключения.

1 голос
/ 26 октября 2011

Я думаю, что вы не указали атрибут "applicationName" в тегах "members" и "roleManager" в Web.Config.Вот пример: -

<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>
0 голосов
/ 25 августа 2014

Ответ Мансура Джи - отличный шаблон для подражания.Вот ссылка на документацию о том, что и как должно быть реализовано в web.config для включения RoleManager:

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

Надеюсь, это добавит некоторый контекст для будущих читателей, так как яМне нужно было немного, когда я впервые наткнулся на этот ответ.

...