gpt4 book ai didi

mysql - RoleProvider .NET 2 - 从 MS Access 转换为 MySQL

转载 作者:行者123 更新时间:2023-11-29 20:27:51 32 4
gpt4 key购买 nike

我有一个使用 AccessMembershipProvide 在 .NET 2 上运行的旧站点,我将其更改为 MySqlMemebrshipProvider - 成员资格方面工作正常,但角色部分似乎没有提供角色方法?

如果我切换回 Web.Config 中的 OdbcRoleProvide,它可以在仍然使用 MySqlMembershipProvider 的情况下工作。

我使用以下方式调用角色: Response.Write(Roles.IsUserInRole(User.Identity.Name, "Admin") & "-role exit- "& Roles.RoleExists("Admin"))

即使用户已登录,也会返回false。?

注意:我在托管站点上运行它,并且无法访问 Visual Studio(我知道这会使调试变得异常困难)!!!

网络配置:

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

...

最佳答案

不知道为什么恢复到 RolesProvider.vb 没有导致相同的响应,但是 MembershipProvider.cs 中存在错误的 SQL 语句。这解决了问题,并且 RolesProvider 根据需要进行响应。

关于mysql - RoleProvider .NET 2 - 从 MS Access 转换为 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39191498/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com