Я пытаюсь заполнить членство в моем приложении asp.net mvc (в файле migrations / config.cs)
protected override void Seed(Logintest.Models.ApplicationDbContext
context)
{
var roles = (SimpleRoleProvider)Roles.Provider;
var membership = (SimpleMembershipProvider)Membership.Provider;
if(!roles.RoleExists("Admin"))
{
roles.CreateRole("Admin");
}
if(membership.GetUser("jay", false) == null)
{
membership.CreateUserAndAccount("jay", "otoole");
}
if(!roles.GetRolesForUser("jay").Contains("Admin"))
{
roles.AddUsersToRoles(new[] { "jay" }, new[] { "admin" });
}
}
Я также включил диспетчер ролей и диспетчер членства в Web.config
<roleManager enabled="true" defaultProvider="simple">
<providers>
<clear/>
<add name="simple" type="WebMatrix.WebData.SimpleRoleProvider,
WebMatrix.WebData"/>
</providers>
</roleManager>
<membership defaultProvider="simple">
<providers>
<clear/>
<add name="simple" type="WebMatrix.WebData.SimpleMembershipProvider,
WebMatrix.WebData"/>
</providers>
</membership>
Хотя при попытке обновить базу данных в консоли диспетчера пакетов, чтобы запустить метод Seed, я получаю следующую ошибку:
Вы должны вызвать метод "WebSecurity.InitializeDatabaseConnection".
перед вызовом любого другого метода класса "WebSecurity". Этот звонок
должен быть помещен в файл _AppStart.cshtml в корне вашего сайта.
Я не могу найти файл _AppStart.cshtml, поэтому я создал его и поместил в него следующее:
@using System.Configuration;
@{
WebSecurity.InitializeDatabaseConnection("DefaultConnection",
"UserProfile", "UserId", "UserName", autoCreateTables: true);
}
После попытки выше я все еще получаю ту же ошибку. Может кто-нибудь, пожалуйста, укажите мне в правильном направлении? то есть как мне вызвать метод "WebSecurity.InitializeDatabaseConnection" перед классом "WebSecurity"?