无法在aspnet Identity中添加用户+角色记录

时间:2016-01-04 13:10:43

标签: asp.net vb.net entity-framework

  • Web窗体项目/ VB / ASP 4.5.2 / VS2015
  • EntityFramework 6.1.3 / Identity.EntityFramework 2.2.1
  • NuGet中的其他软件包都显示当前版本

我有一个使用VS模板的webapp,其中包含创建用户等的页面。我创建了用户,他们可以/不能根据各种文件夹中的web.config访问文件夹。

现在我需要添加角色并将角色附加到用户。

我可以使用

创建角色
 Dim createRole As String = RoleTextBox.Text
        Dim RoleManager = New RoleManager(Of IdentityRole)(New RoleStore(Of IdentityRole)(New ApplicationDbContext()))
        Try
            If RoleManager.RoleExists(createRole) Then
                Msg.Text = "Role '" & Server.HtmlEncode(createRole) & "' already exists. Please specify a different role name."
                Return
            End If

            RoleManager.Create(New IdentityRole(createRole))

接下来,我需要将角色附加到用户,我有:

Public Class admin_superadmin
    Inherits System.Web.UI.Page

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim UserManager = New UserManager(Of IdentityUser)(New UserStore(Of IdentityUser)(New IdentityDbContext()))
        UserManager.AddToRole(DropDownList5.SelectedValue, DropDownList6.SelectedValue)
        Label1.Text = DropDownList5.SelectedItem.Text + " Was added to the " + DropDownList6.SelectedValue + " Role."
    End Sub

然而,当运行时,在usermanager.addtorole行失败并显示以下消息: System.InvalidOperationException:找不到UserId。

数据库表是由应用程序创建的。在表AspNetUserRoles中是字段UserID,RoleID。

非常感谢有人可以帮助确定问题。

1 个答案:

答案 0 :(得分:0)

作为一名想要对用户进行身份验证但从未使用过身份或MVC的前端设计人员,我最终想出来了,这将是一个十分钟的方式来启动和运行一个简单的Web应用程序身份验证和角色,使用远程数据库:

档案>新项目>网络> ASP.NET Web应用程序>网络表格

在web.config中,将DefaultConnection更改为指向我现有的远程MSSQL db

在解决方案资源管理器帐户> Register.aspx>在浏览器中查看

在浏览器中,注册一个新用户:在远程数据库中,为我设置了所有需要的身份验证表,现在我可以在“帐户”文件夹中的VS模板项目页面中添加和修改用户。但我还不能使用角色。

项目>添加新项> VB(对我来说)>数据>

我现在可以创建一个管理文件夹,其中包含一些控件和代码 UserManager.AddToRole(user.Id,)将成功,并且不会在我原始问题中报告错误。

希望这些步骤可以帮助另一个初学者。