Я пытаюсь использовать роли ASP.NET MVC. Я добавил запись в web.config:Где сохраняются роли ASP.NET?
<connectionStrings>
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\resorg-db.mdf;Integrated Security=True"/>
</connectionStrings>
<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<roleManager enabled="true" />
</system.web>
у меня нет миграции включены, потому что теперь я предпочитаю иметь БД воссозданы при каждом изменении модели.
Я programaticaly добавить роль в методе Initialize DB, как:
Roles.CreateRole("root");
Roles.AddUserToRole(testUser.UserName, "root");
context.SaveChanges();
Проблема: Когда я запускаю это в первый раз, все было прекрасно. Когда я меняю модель и снова запускаю метод инициализации, я получаю сообщение о том, что эта роль уже существует. Я просмотрел базу данных с помощью Server explorer, но оба AspNetRoles и AspNetUserRoles пусты. Где сохраняются роли? В той же папке с моей БД есть еще один db, называемый aspnetdb.mdf.
Я попытался открыть его с помощью SysTools MDF Viewer 1.0, но у меня был неверный формат.
Бонус вопрос: У меня также есть несколько тестов в другом проекте. Это воссоздает БД и выполняет те же тесты. Моя проблема заключается в том, что я получил эту ошибку:
System.Configuration.Provider.ProviderException: The Role Manager feature has not been enabled.
хотя я добавил тот же элемент в моем app.config для UnitTest проекта.
это вызывающе в 'AspNetRoles', попробуйте обновить содержимое таблицы, вы сказали, что у вас есть 2 созданных БД, вы сами создали один из них? – LiranBo
Обнаружена проблема: мне нужно добавить строку подключения в запись roleManager. Если нет строки подключения, ASP.net создаст другую БД для хранения роли. См. Http://stackoverflow.com/questions/8911738/asp-net-membership-roles-saved-on-different-database – AndreiM