使用SimpleMembership(MySQL)

时间:2015-06-29 16:01:31

标签: c# mysql asp.net-mvc authentication simplemembership

我正在尝试在Code First项目中使用SimpleMembership和MySql。这是我做的初始化器:

        WebSecurity.InitializeDatabaseConnection("MyConnectionStringName", "UserProfile", "UserId", "UserName", false);

        if (!Roles.RoleExists("Employee"))
        {
            Roles.CreateRole("Employee");
        }

        if (!WebSecurity.UserExists("Kurt"))
        {
            WebSecurity.CreateUserAndAccount("Kurt", "test");
            Roles.AddUserToRole("Kurt", "Employee");
        }

“AddUserToRole”出现以下异常:

  

MySql.Web.dll中出现'System.InvalidOperationException'类型的异常,但未在用户代码中处理

     

其他信息:未初始化UserTableName配置。

将用户添加到表“userprofile”(和“webpages_membership”),并将角色添加到“webpages_roles”。 “webpages_usersinroles”是空的。

Web.config中的提供程序(对于带有MySql的SimpleMembership):

    <membership defaultProvider="MySqlSimpleMembershipProvider">
        <providers>
            <clear />
            <add name="MySqlSimpleMembershipProvider" type="MySql.Web.Security.MySqlSimpleMembershipProvider,MySql.Web,Version=6.9.6.0,Culture=neutral,PublicKeyToken=c5687fc88969c44d" applicationName="/" description="MySQLdefaultapplication" connectionStringName="MyConnectionStringName" userTableName="UserProfile" userIdColumn="UserId" userNameColumn="UserName" autoGenerateTables="True" />
        </providers>
    </membership>
    <roleManager enabled="true" defaultProvider="MySqlSimpleRoleProvider">
        <providers>
            <clear />
            <add name="MySqlSimpleRoleProvider" type="MySql.Web.Security.MySqlSimpleRoleProvider, MySql.Web, Version=6.9.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="MyConnectionStringName" applicationName="/" />
        </providers>
    </roleManager>

有谁知道哪个配置不在这里?这很奇怪,因为其他事情(创建用户和角色)工作正常,没有例外。

提前致谢!

更新

我已将membershipprovider中的属性添加到rolemanager。

    <roleManager defaultProvider="MySqlSimpleRoleProvider">
        <providers>
            <clear />
            <add name="MySqlSimpleRoleProvider" type="MySql.Web.Security.MySqlSimpleRoleProvider, MySql.Web, Version=6.9.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="SamandarService_DB" applicationName="SamandarService" userTableName="UserProfile" userIdColumn="UserId" userNameColumn="Name" />
        </providers>
    </roleManager>

现在出现另一个例外:

  

无法添加或更新子行:外键约束失败(ticketwebpages_usersinroles,CONSTRAINT fk_RoleId FOREIGN KEY(RoleId)参考webpages_rolesRoleId))

该角色已正确添加到角色表中,但由于一个神秘的原因,MySql无法引用该角色。

如何解决此问题?

0 个答案:

没有答案