2016-08-28 4 views
0

J'ai un ancien site fonctionnant sous .NET 2 en utilisant un AccessMembershipProvide et je le change en MySqlMemebrshipProvider - L'adhésion fonctionne bien, mais la partie rôles ne semble pas fournir les méthodes de rôles?RoleProvider .NET 2 - converti à partir de MS Access vers MySQL

Si je repasse à OdbcRoleProvide dans Web.Config cela fonctionne tout en utilisant MySqlMembershipProvider.

J'appelle les rôles avec: Response.Write(Roles.IsUserInRole(User.Identity.Name, "Admin") & " -role exist- " & Roles.RoleExists("Admin"))

ce retourne false même avec l'utilisateur connecté.?

REMARQUE: je l'exécute sur un site hébergé et je n'ai pas accès à Visual Studio (je sais que cela rend le débogage incroyablement difficile) !!!

web.config:

<connectionStrings> 
<clear /> 
<add name="OdbcServices" connectionString="Driver={Microsoft Access Driver (*.mdb)};Dbq=e:\App_Data\subsite.mdb;" /> 
<add name="ConnString" connectionString="Database=Training;Data Source=localhost;User Id=myuser;Password=mypassword" /> 
</connectionStrings> 
<system.web> 

<compilation debug="true" strict="false" explicit="true"> 
    <codeSubDirectories> 
     <add directoryName="VBCode" /> 
     <add directoryName="CSCode" /> 
    </codeSubDirectories> 
</compilation> 
<!-- 
<membership defaultProvider="AccessMembershipProvider" 
      userIsOnlineTimeWindow="20"> 
    <providers> 
    <clear /> 
    <add name="AccessMembershipProvider" 
type="AccessMembershipProvider" 
enablePasswordReset="true" 
enablePasswordRetrieval="true" 
requiresQuestionAndAnswer="true" 
connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\App_Data\subsite.mdb;Persist Security Info=False" 
/> 
    </providers> 

</membership> 

<roleManager defaultProvider="OdbcRoleProvider" 
    enabled="true" 
    cacheRolesInCookie="true" 
    cookieName=".ASPROLES" 
    cookieTimeout="30" 
    cookiePath="/" 
    cookieRequireSSL="false" 
    cookieSlidingExpiration="true" 
    cookieProtection="All" > 

    <providers> 
    <clear /> 
    <add name="OdbcRoleProvider" 
     type="Samples.AspNet.Roles.OdbcRoleProvider" 
     connectionStringName="OdbcServices" 
     applicationName="SampleApplication" 
     writeExceptionsToEventLog="false" /> 

    </providers> 

</roleManager> 
--> 

<!-- http://www.codeproject.com/Articles/12301/Membership-and-Role-providers-for-MySQL --> 

<roleManager defaultProvider="MySqlRoleProvider" 
    enabled="true" 
    cacheRolesInCookie="true" 
    cookieName=".ASPROLES" 
    cookieTimeout="30" 
    cookiePath="/" 
    cookieRequireSSL="false" 
    cookieSlidingExpiration="true" 
    cookieProtection="All" > 
<providers> 
    <clear /> 
    <add 
     name="MySqlRoleProvider" 
     type="Andri.Web.MySqlRoleProvider" 
     connectionStringName="ConnString" 
     applicationName="SampleApplication" 
     writeExceptionsToEventLog="false" 
    /> 
</providers> 
</roleManager> 

<membership defaultProvider="MySqlMembershipProvider" 
      userIsOnlineTimeWindow="15"> 
    <providers> 
     <clear /> 
     <add 
      name="MySqlMembershipProvider" 
      type="Andri.Web.MySqlMembershipProvider" 
      connectionStringName="ConnString" 
      applicationName="ApplicationName" 
      enablePasswordRetrieval="true" 
      enablePasswordReset="true" 
      requiresQuestionAndAnswer="true" 
      requiresUniqueEmail="false" 
      passwordFormat="Clear" 
      writeExceptionsToEventLog="false" 
     /> 
    </providers> 
</membership> 


<authentication mode="Forms"> 
    <forms loginUrl="~/Login.aspx" /> 
</authentication> 

... 

Répondre

0

Je ne sais pas pourquoi revenir en arrière à RolesProvider.vb n'a pas provoqué la même réponse, mais il y avait une instruction SQL erronée dans les MembershipProvider.cs. Cela a résolu le problème et le RolesProvider répond comme vous le souhaitez.