MySQL的ASP.NET MVC角色提供程序

时间:2010-09-28 16:22:05

标签: asp.net-mvc roles roleprovider

我尝试使用此article设置角色提供程序。

部分工作 - 提供程序在MySQL中创建了一些表,但我无法从ASP.NET配置工具访问它。在尝试添加一些角色(角色 - >创建或管理角色)时出现以下错误:

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:命名管道提供程序,错误:40 - 无法打开到SQL Server的连接)在ASP处的System.Web.Administration.WebAdminPage.CallWebAdminHelperMethod(Boolean isMembership,String methodName,Object []参数,Type [] paramTypes)。 system_Web上的System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e)的System.Web.Util.CalliHelper.ArglessFunctionCaller(IntPtr fp,Object o)中的ASP.security_roles_manageallroles_aspx.Page_Load()处的security_roles_manageallroles_aspx.BindGrid()。 System.Web.UI.Page.ProcessRequestMain上的System.Web.UI.Control.LoadRecursive()中的Web.UI.Control.OnLoad(EventArgs e)(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)

My Connection字符串(用于使用LINQ to MySQL访问数据(使用dblinq)):

<connectionStrings>
<add name="ZenToolDB" connectionString="Database=zentool;Data Source=localhost;User Id=root;Password=supersecretpassword" providerName="MySql.Data.MySqlClient" />
</connectionStrings>

任何想法,如何让它发挥作用?谢谢!

编辑:添加了与提供商的web.config片段:

<membership defaultProvider="MySqlMembershipProvider">
      <providers>
        <clear/>
        <add name="MySqlMembershipProvider"
             type="MySql.Web.Security.MySQLMembershipProvider,
             MySql.Web, Version=6.2.2.0, Culture=neutral,
             PublicKeyToken=c5687fc88969c44d"
             autogenerateschema="true"
             connectionStringName="ZenToolDB"
             enablePasswordRetrieval="false"
             enablePasswordReset="true"
             requiresQuestionAndAnswer="false"
             requiresUniqueEmail="false"
             passwordFormat="Hashed"
             maxInvalidPasswordAttempts="5"
             minRequiredPasswordLength="6"
             minRequiredNonalphanumericCharacters="0"
             passwordAttemptWindow="10"
             passwordStrengthRegularExpression=""
             applicationName="/"/>
      </providers>
    </membership>
        <profile>
            <providers>
                <clear />
                <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ZenToolDB" applicationName="/" />
            </providers>
        </profile>
        <roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
      <providers>
        <clear />
        <add connectionStringName="ZenToolDB" applicationName="/" name="AspNetSqlRoleProvider"
            type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        <!--
        <add applicationName="/" name="AspNetWindowsTokenRoleProvider"
            type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        -->
      </providers>
    </roleManager>

1 个答案:

答案 0 :(得分:1)

您的web.config中有角色提供程序部分,您是否确保指向新的角色提供程序?如果不是,则可能尝试使用默认的SQL角色提供程序。

默认值如下所示,并使用System.Web.Security.SqlRoleProvider,它似乎是堆栈跟踪中的引用。

<membership>
  <providers>
    <clear/>
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
         enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
         maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
         applicationName="/" />
  </providers>
</membership>

<profile>
  <providers>
    <clear/>
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
  </providers>
</profile>

<roleManager enabled="false">
  <providers>
    <clear/>
    <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
  </providers>
</roleManager>