2014-11-11 2 views
1

Я использую ASP.NET MVC с платформой Entity Framework, и я пытаюсь выяснить, как получить работу менеджера ролей. После того, как я сначала зарегистрировал пользователя, инициировав EF для создания таблиц управления/идентификации пользователя, я переместил их (AspNetUsers, AspNetRoles, AspNetUserRoles, AspNetUserClaims и AspNetUserLogins) в мою существующую базу данных и установил соединение по умолчанию, чтобы указать туда , Все было прекрасно, и денди, пока я не решил, что необходимо для реализации диспетчера ролей и после добавления следующей записи в мой web.config,Получение диспетчера ролей для работы с существующей базой данных

<roleManager enabled="true" defaultProvider="RoleManager"> 
    <providers> 
     <add name="RoleManager" 
      type="System.Web.Security.SqlRoleProvider" 
      connectionStringName="DefaultConnection" 
      applicationName="MyApp" /> 
    </providers> 
</roleManager> 

и пытаюсь создать роль (Roles.CreateRole("Admin") [Боковой вопрос, есть ли способ сделать это за пределами кода в VS 2013?]), я столкнулся с ошибкой: Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'. Поэтому я, естественно, предположил, что таблицы не были единственными объектами базы данных, которые были сгенерированы, но после проверки оригинального mdf получается, что действительно, это все, что было. На данный момент я нахожусь в полной потере, и любая помощь будет очень признательна.

Обновление: Я искал решения, связанные с использованием инструмента aspnet_reqsql для добавления функций Role Manager, но таблицы, которые это порождают, кажутся несовместимыми. Например, dbo.aspnet_Users вместо dbo.AspNetUsers.

ответ

3

Кажется, что таблицы AspNetUsers, AspNetRoles, AspNetUserRoles, AspNetUserClaims и AspNetUserLogins являются частью новой системы идентификации ASP.NET, тогда как aspnet_Users и т. Д. Являются частью старой системы (членство, я считаю). Roles.CreateRole - это членство, а не идентификатор. Для системы Identity необязательна запись web.config roleManager, и роль будет создана с использованием Microsoft.AspNet.Identity.RoleManager. Например,

RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new MyDbContext())); 
var roleresult = RoleManager.Create(new IdentityRole(roleName)); 
+1

Ваши предположения верны! Чтобы правильно работать с идентификационной информацией, вам нужно удалить разделы вашего 'web.config', которые относятся к старым MembershipProvider. – trailmax

+0

@Drazen - спасибо. Я собирался сжечь дом из разочарования !!!!! – noelicus

+0

@noelicus Приветствия! Это, конечно, голова. –

Смежные вопросы