2016-08-28 8 views
0

私はAccessMembershipProvideを使用して.NET 2上で実行されていた古いサイトを持っていますが、MySqlMemebrshipProviderに変更しています - メンバーシップ側はうまく動作しますが、役割のメソッド?RoleProvider .NET 2 - MS AccessからMySQLに変換

Web.ConfigのOdbcRoleProvideに戻っても、MySqlMembershipProviderを使用していても動作します。

私は役割を呼んでいる:Response.Write(Roles.IsUserInRole(User.Identity.Name, "Admin") & " -role exist- " & Roles.RoleExists("Admin"))

これがログインしているユーザーにもしてfalseを返しますか。?

注:私はホストされたサイトで実行しており、Visual Studioにアクセスすることはできません(これはデバッグが非常に難しいことを知っています)!

の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> 

... 

答えて

0

同じ応答を引き起こさなかったバックRolesProvider.vbに戻す理由、しかしMembershipProvider.csで誤ったSQL文があったわかりません。これにより問題は解決され、RolesProviderは必要に応じて応答します。

関連する問題