mySQL asp角色提供程序错误。无法连接到SQL Server数据库

时间:2011-11-10 16:21:51

标签: asp.net mysql

这是我第一次尝试为asp.net做角色,我拥有的是mySQL后端,我想为用户添加一堆角色。我在下面使用的代码,我不断收到错误无法连接到SQL Server数据库。我假设这是因为默认提供程序引用SQL,但我无法弄清楚如何切换它,因此我可以向用户添加多个角色。谢谢你的帮助!

using (MySqlConnection cn2 = new MySqlConnection("Server=localhost;Database=users; User=root;Password=PASSWORD;"))
            {
                cn2.Open();
                MySqlCommand cmd2 = new MySqlCommand(storedProcedureName2, cn);
                cmd2.CommandType = CommandType.StoredProcedure;
                cmd2.Parameters.Add("@usernameID", userID);
                MySqlDataReader dr2 = cmd2.ExecuteReader();
                while (dr2.Read())
                {
                    string roleName = dr2["role"].ToString();
                    Roles.AddUserToRole(userID, roleName);
                }


            }

2 个答案:

答案 0 :(得分:1)

您可以在web.config文件中配置ASP.NET成员资格和角色。像这样的东西会将你的默认提供者设置为MySQL后端:

<membership defaultProvider="MySqlMembershipProvider">
<providers>
<clear />
<add name="MySqlMembershipProvider" type="MySql.Web.Security.MySqlMembershipProvider,M ySql.Web,Version=6.3.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" autogenerateschema="true" connectionStringName="LocalMySqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requireQuestionAndAnswer="false" requireUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="0" passwordStrengthRegularExpression="" applicationName="/" />
</providers>
</membership>
<profile defaultProvider="MySqlProfileProvider">
<providers>
<clear/>
<add name="MySqlProfileProvider" type="MySql.Web.Profile.MySQLProfileProvider, MySql.Web, Version=6.3.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" conectionStringName="LocalMySqlServer" applicationName="/"/>
</providers>
</profile>
<roleManager enabled="true" defaultProvider="MySqlRoleProvider">
<providers>
<clear/>
<add connectionStringName="LocalMySqlServer" applicationName="/" name="MySqlRoleProvider"
type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.3.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
</providers>
</roleManager>
<trust level="Full"/>
<machineKey validationKey="AutoGenerate" validation="SHA1"/>

编辑:我在下面添加了connectionStrings部分:

    <connectionStrings>
    <remove name="LocalMySqlServer"/>
    <add name="LocalMySqlServer" connectionString="Server=localhost;Database=users; User=root;Password=PASSWORD;" providerName="MySql.Data.MySqlClient"/>
    </connectionStrings>

答案 1 :(得分:0)

尝试以下连接字符串:

 "Server=localhost;Port=3306;Database=users;Uid=root;Pwd=PASSWORD;"

如果有效,请更改密码:)

如果这不起作用,并且假设错误在数据库的连接中(您通过发布这么多代码行而混淆了我)进行常规检查:

  • 服务器正在运行吗?
  • 密码是否正确
  • 端口是默认值(3306)
  • 是否存在内部防火墙问题,因为MySQL使用TCP:3306,理论上防火墙可以阻止此操作。