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


  • Web窗体项目/VB/ASP 4.5.2/VS2015
  • 实体框架6.1.3/身份实体框架2.2.1
  • NuGet中的其他包都显示当前版本

我有一个使用VS模板的web应用程序,其中包括创建用户等的页面。我已经创建了用户,他们可以/不能根据各个文件夹中的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))

etc

接下来,我需要为用户附加角色,为此我得到了:

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。

DB表是由应用程序创建的。表中的AspNetUserRoles是字段UserID、RoleID。

如果有人能帮助确定问题,我将不胜感激。

作为一名前端设计师,我想对用户进行身份验证,但从未使用过Identity或MVC,最终我发现了这一点,这将是一个使用远程数据库启动并运行带有身份验证和角色的简单web应用程序的十分钟方法

文件>新项目>Web>ASP.NET Web应用程序>Web表单

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

在解决方案浏览器中"帐户">"Register.aspx">"在浏览器中查看"

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

项目>添加新项>VB(对我来说)>数据>ADO.NET实体数据模型>来自数据库的EF设计器>使其引用DefaultConnection>勾选所有表

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

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

最新更新