2013-07-31 16 views
9

Sto cercando di ottenere l'autorizzazione su asp.net mvc4, quindi cerco di utilizzare WebSecurity.Il provider di ruolo predefinito non è stato trovato quando si utilizza SimpleMembershipProvider

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

ho messo questo in Global.asax, e questo è dove entra l'errore, "Provider ruolo predefinito non è stato trovato".

Su Internet ho letto che ho dovuto aggiungere questa riga di codice al mio web.config <roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">. Ma l'avevo aggiunto già a causa di errori precedenti.

Come posso risolvere questo problema ??

Edit:

Quando cambio a defaultProvider="SimpleRoleProvider" mi dà un nuovo errore. Si dice

Il tipo o il nome dello spazio dei nomi 'dati' non esiste nello spazio dei nomi 'WebMatrix' (che le manca un riferimento all'assembly?)

risposta

18

ho riparato cambiando il defaultProvider-SimpleRoleProvider. Il secondo errore è stato risolto aggiungendo Webmatrix.data come riferimento e andando a quello della sua proprietà e inserendo copy local su true. Non so come lo risolva, se qualcuno può elaborarlo sarebbe bello.

Ecco il mio web.config per chi urta lo stesso 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

Non dimenticare di accettare la propria risposta. Questo dovrebbe aiutare molte persone. –

+2

Puoi scegliere qualsiasi nome, come 'defaultProvider =" MyRoleProvider "', purché il nome corrisponda a uno nella sezione ''. Qui specifichi quale libreria viene effettivamente utilizzata. Quindi in '" dici di volere utilizzare SimpleRoleProvider dalla libreria WebMatrix.WebData e di chiamarlo "MyRoleProvider". Se non si imposta Copia locale su True WebMatrix.WebData.dll non verrà copiato nella cartella bin durante la compilazione. Poiché non fa parte del GAC per impostazione predefinita, l'assembly non riesce a trovarlo. – flip

Problemi correlati