2013-03-22 3 views
0

Я прочитал ряд ссылок, чтобы попытаться помочь решить эту проблему. Я следую моему первому руководству MVC через Pluralsight, и я перехожу к использованию аутентификации. Он использует шаблон интернет-приложений MVC4.Memberhip.Provider должен быть экземпляром ExtendedMembershipProvider

В моем Seed метод у меня есть:

protected override void Seed(DepartmentDb context) 
{ 
    if (!Roles.RoleExists("Admin")) 
    Roles.CreateRole("Admin"); 
    if (Membership.GetUser("Luke") == null) 
    { 
    Membership.CreateUser("Luke", "password"); 
    Roles.AddUserToRole("Luke", "Admin"); 
    } 
} 

Пользователь и роль добавить штраф, чтобы SQL и все это кажется работяга доры, а также же, как учебник. Затем он инструктирует войти в систему с моими учетными данными. Поэтому я стараюсь войти, и я получаю исключение, указанное в названии:

Membership.Provider должен быть экземпляром ExtendedMembershipProvider

Я попытался повторно установить необходимые пакеты, а также пыталось installing it, как за сообщение SO, а также добавление SimpleMembership в appsetings, который не работает.

Я также прочитал это MSDN link в соответствии с комментарием, который я выполнил, но по-прежнему не могу его решить.

Что еще мне нужно сделать, чтобы это сработало? Это сводит меня с ума.

Спасибо,

Люк.

+0

возможно дубликат [MVC4 ExtendedMembershipProvider и entityframework] (HTTP:.. // StackOverflow .com/вопросы/12181186/mvc4-extendedmembershipprovider-and-entityframework) –

+0

@DaveSwersky Я посмотрел, что тоже не мог найти ничего конкретного, я буду читать еще хотя :) – LukeHennerley

+0

Ссылка в первом ответе, похоже, содержит некоторые детали. –

ответ

1

Проблема заключается в том, что вы вызываете Membership.CreateUser() до инициализации SimpleMembershipProvider. Это инициализируется с помощью атрибута AccountController (который обычно загружается, когда пользователь входит в систему, поскольку функции входа в систему являются частью AccountController.

К сожалению, ваша функция семени запускается до доступа к AccountController, и, таким образом, провайдер еще не инициализирован

Посмотрите на класс InitializeSimpleMembershipAttribute.cs, и выяснить способ вызвать это до вашей функции семян работает

+0

Извините, что я не сделал этого очень четко. Секция семян работает нормально, это когда я вхожу в систему через AccountController, что у меня проблема. – LukeHennerley

+0

@ LukeHennerley - Вы добавили определение членства в свой web.config? Если это так, то вы переопределяете простого поставщика членства, и когда вы идете на вход в систему, он пытается инициализировать поставщика. –

+0

Я не добавлял его сам, я использовал http://nuget.org/packages/Microsoft.AspNet.Providers, который добавляет 'DefaultRoleProvider' и' DefaultMembershipProvider' согласно моему учебнику в web.config. Будет ли опубликовать эту область кода, чтобы вам было легче ответить? :) – LukeHennerley

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