2013-07-31 18 views
9

Próbuję uzyskać autoryzację działającą na asp.net mvc4, więc próbuję użyć WebSecurity.Nie można znaleźć domyślnego dostawcy roli przy użyciu SimpleMembershipProvider

WebSecurity.InitializeDatabaseConnection("tradefairindia", "Users", "Id", "Username", false); 

Wrzuciłem to do Global.asax, i to, gdzie przychodzi błąd, „Default Provider rolę nie można znaleźć”.

W Internecie przeczytałem, że muszę dodać ten wiersz kodu do mojego web.config <roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">. Ale dodałem go już z powodu wcześniejszych błędów.

Jak mogę rozwiązać ten problem?

Edit:

Kiedy go zmienić na defaultProvider="SimpleRoleProvider" daje mi nowy błąd. Mówi

typu lub nazwa przestrzeni nazw „Dane” nie istnieje w przestrzeni nazw „WebMatrix” (czy brakuje odwołania do zestawu?)

Odpowiedz

18

Naprawiłem go zmieniając defaultProvider do SimpleRoleProvider. Drugi błąd, który naprawiłem dodając Webmatrix.data jako odniesienie i przechodząc do jego właściwości i umieszczając kopię lokalną na true. Nie wiem, jak to naprawi, jeśli ktokolwiek może rozwinąć, to byłoby miłe.

Oto moja web.config dla każdego, kto wpadnie na ten sam prob:

<system.web> 
    //... 
    <membership defaultProvider="SimpleMembershipProvider"> 
     <providers> 
     <clear /> 
     <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" /> 
     </providers> 
    </membership> 
    <roleManager enabled="true" defaultProvider="SimpleRoleProvider"> 
     <providers> 
     <clear /> 
     <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" /> 
     </providers> 
    </roleManager> 
    //... 
</system.web> 
+1

Nie zapomnij zaakceptować swoją odpowiedź. To powinno pomóc wielu ludziom. –

+2

Możesz wybrać dowolną nazwę, np. 'DefaultProvider =" MyRoleProvider "', o ile nazwa odpowiada nazwie w sekcji "". Tam określasz, która biblioteka jest faktycznie używana. Tak więc w '' mówisz, że chcesz używać SimpleRoleProvider z biblioteki WebMatrix.WebData i nazywasz to "MyRoleProvider". Jeśli nie ustawisz opcji Kopiuj lokalnie na True WebMatrix.WebData.dll nie zostanie skopiowany do folderu bin podczas kompilacji. Ponieważ domyślnie nie jest częścią GAC, twój zestaw nie może go znaleźć. – flip

Powiązane problemy