Freigeben über


SqlRoleProvider.AddUsersToRoles(String[], String[]) Methode

Definition

Fügt jeder der angegebenen Rollen die angegebenen Benutzernamen hinzu.

public:
 override void AddUsersToRoles(cli::array <System::String ^> ^ usernames, cli::array <System::String ^> ^ roleNames);
public override void AddUsersToRoles (string[] usernames, string[] roleNames);
override this.AddUsersToRoles : string[] * string[] -> unit
Public Overrides Sub AddUsersToRoles (usernames As String(), roleNames As String())

Parameter

usernames
String[]

Ein Zeichenfolgenarray mit Benutzernamen, die den angegebenen Rollen hinzugefügt werden sollen.

roleNames
String[]

Ein Zeichenfolgenarray mit Rollennamen, denen die angegebenen Benutzernamen hinzugefügt werden sollen.

Ausnahmen

Eine der Rollen in roleNames ist null.

- oder -

Einer der Benutzer in usernames ist null.

Eine der Rollen in roleNames ist eine leere Zeichenfolge oder enthält ein Komma.

- oder -

Einer der Benutzer in usernames ist eine leere Zeichenfolge oder enthält ein Komma.

- oder -

Eine der Rollen in roleNames ist länger als 256 Zeichen.

- oder -

Einer der Benutzer in usernames ist länger als 256 Zeichen.

- oder -

roleNames enthält ein doppeltes Element.

- oder -

usernames enthält ein doppeltes Element.

Mindestens einer der angegebenen Rollennamen wurde nicht gefunden.

- oder -

Mindestens einer der angegebenen Benutzernamen wurde nicht gefunden.

- oder -

Mindestens einer der angegebenen Benutzernamen ist bereits einem oder mehreren angegebenen Rollennamen zugeordnet.

- oder -

Während der Kommunikation mit der Datenbank ist ein unbekannter Fehler aufgetreten.

Beispiele

Im folgenden Codebeispiel wird einer Rolle ein oder mehrere Benutzer hinzugefügt oder ein Benutzer aus einer Rolle entfernt. Ein Beispiel für eine Web.config-Datei, die die Rollenverwaltung aktiviert, finden Sie unter SqlRoleProvider.


<%@ Page Language="C#" %>

<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Web.UI" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  string[] rolesArray;
  MembershipUserCollection users;
  string[] usersInRole;

  public void Page_Load()
  {
    Msg.Text = "";

    if (!IsPostBack)
    {
      // Bind roles to ListBox.

      rolesArray = Roles.GetAllRoles();
      RolesListBox.DataSource = rolesArray;
      RolesListBox.DataBind();

      // Bind users to ListBox.

      users = Membership.GetAllUsers();
      UsersListBox.DataSource = users;
      UsersListBox.DataBind();
    }

    if (RolesListBox.SelectedItem != null)
    {
      // Show users in role. Bind user list to GridView.

      usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value);
      UsersInRoleGrid.DataSource = usersInRole;
      UsersInRoleGrid.DataBind();
    }
  }


  public void AddUsers_OnClick(object sender, EventArgs args)
  {
    // Verify that a role is selected.

    if (RolesListBox.SelectedItem == null)
    {
      Msg.Text = "Please select a role.";
      return;
    }


    // Verify that at least one user is selected.

    if (UsersListBox.SelectedItem == null)
    {
      Msg.Text = "Please select one or more users.";
      return;
    }


    // Create list of users to be added to the selected role.

    string[] newusers = new string[UsersListBox.GetSelectedIndices().Length];

    for (int i = 0; i < newusers.Length; i++)
    {
      newusers[i] = UsersListBox.Items[UsersListBox.GetSelectedIndices()[i]].Value;
    }


    // Add the users to the selected role.

    try
    {
      Roles.AddUsersToRole(newusers, RolesListBox.SelectedItem.Value);

      // Re-bind users in role to GridView.

      usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value);
      UsersInRoleGrid.DataSource = usersInRole;
      UsersInRoleGrid.DataBind();
    }
    catch (Exception e)
    {
      Msg.Text = e.Message;
    }
  }


  public void UsersInRoleGrid_RemoveFromRole(object sender, GridViewCommandEventArgs args)
  {
    // Get the selected user name to remove.

    int index = Convert.ToInt32(args.CommandArgument);

    string username = ((DataBoundLiteralControl)UsersInRoleGrid.Rows[index].Cells[0].Controls[0]).Text;


    // Remove the user from the selected role.

    try
    {
      Roles.RemoveUserFromRole(username, RolesListBox.SelectedItem.Value);
    }
    catch (Exception e)
    {
      Msg.Text = "An exception of type " + e.GetType().ToString() +
                 " was encountered removing the user from the role.";
    }


    // Re-bind users in role to GridView.

    usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value);
    UsersInRoleGrid.DataSource = usersInRole;
    UsersInRoleGrid.DataBind();
  }



</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
  <title>Sample: Role Membership</title>
</head>
<body>
  <form runat="server" id="PageForm">
    <h3>
      Role Membership</h3>
    <asp:Label ID="Msg" ForeColor="maroon" runat="server" /><br />
    <table cellpadding="3" border="0">
      <tr>
        <td valign="top">
          Roles:</td>
        <td valign="top">
          <asp:ListBox ID="RolesListBox" runat="server" Rows="8" AutoPostBack="true" /></td>
        <td valign="top">
          Users:</td>
        <td valign="top">
          <asp:ListBox ID="UsersListBox" DataTextField="Username" Rows="8" SelectionMode="Multiple"
            runat="server" /></td>
        <td valign="top">
          <asp:Button Text="Add User(s) to Role" ID="AddUsersButton" runat="server" OnClick="AddUsers_OnClick" /></td>
      </tr>
      <tr>
        <td valign="top">
          Users In Role:</td>
        <td valign="top">
          <asp:GridView runat="server" CellPadding="4" ID="UsersInRoleGrid" AutoGenerateColumns="false"
            GridLines="None" CellSpacing="0" OnRowCommand="UsersInRoleGrid_RemoveFromRole">
            <HeaderStyle BackColor="navy" ForeColor="white" />
            <Columns>
              <asp:TemplateField HeaderText="User Name" >
                <ItemTemplate>
                  <%# Container.DataItem.ToString() %>
                </ItemTemplate>
              </asp:TemplateField>
              <asp:ButtonField Text="Remove From Role" ButtonType="Link" />
            </Columns>
          </asp:GridView>
        </td>
      </tr>
    </table>
  </form>
</body>
</html>

<%@ Page Language="VB" %>

<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Web.UI" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  Dim rolesArray() As String
  Dim users As MembershipUserCollection
  Dim usersInRole() As String

  Public Sub Page_Load()

    Msg.Text = ""

    If Not IsPostBack Then
      ' Bind roles to ListBox.

      rolesArray = Roles.GetAllRoles()
      RolesListBox.DataSource = rolesArray
      RolesListBox.DataBind()

      ' Bind users to ListBox.

      users = Membership.GetAllUsers()
      UsersListBox.DataSource = users
      UsersListBox.DataBind()
    End If

    If Not RolesListBox.SelectedItem Is Nothing Then
      ' Show users in role. Bind user list to GridView.

      usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value)
      UsersInRoleGrid.DataSource = usersInRole
      UsersInRoleGrid.DataBind()
    End If

  End Sub


  Public Sub AddUsers_OnClick(ByVal sender As Object, ByVal args As EventArgs)

    ' Verify that a role is selected.

    If RolesListBox.SelectedItem Is Nothing Then
      Msg.Text = "Please select a role."
      Return
    End If


    ' Verify that at least one user is selected.

    If UsersListBox.SelectedItem Is Nothing Then
      Msg.Text = "Please select one or more users."
      Return
    End If


    ' Create list of users to be added to the selected role.

    Dim newusers(UsersListBox.GetSelectedIndices().Length - 1) As String

    For i As Integer = 0 To newusers.Length - 1
      newusers(i) = UsersListBox.Items(UsersListBox.GetSelectedIndices(i)).Value
    Next


    ' Add the users to the selected role.

    Try
      Roles.AddUsersToRole(newusers, RolesListBox.SelectedItem.Value)

      ' Re-bind users in role to GridView.

      usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value)
      UsersInRoleGrid.DataSource = usersInRole
      UsersInRoleGrid.DataBind()
    Catch e As Exception
      Msg.Text = e.Message
    End Try

  End Sub


  Public Sub UsersInRoleGrid_RemoveFromRole(ByVal sender As Object, ByVal args As GridViewCommandEventArgs)

    ' Get the selected user name to remove.

    Dim index As Integer = Convert.ToInt32(args.CommandArgument)

    Dim username As String = (CType(UsersInRoleGrid.Rows(index).Cells(0).Controls(0), DataBoundLiteralControl)).Text


    ' Remove the user from the selected role.

    Try
      Roles.RemoveUserFromRole(username, RolesListBox.SelectedItem.Value)
    Catch e As Exception
      Msg.Text = "An exception of type " & e.GetType().ToString() & _
                 " was encountered removing the user from the role."
    End Try

    ' Re-bind users in role to GridView.

    usersInRole = Roles.GetUsersInRole(RolesListBox.SelectedItem.Value)
    UsersInRoleGrid.DataSource = usersInRole
    UsersInRoleGrid.DataBind()

  End Sub



</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
  <title>Sample: Role Membership</title>
</head>
<body>
  <form runat="server" id="PageForm">
    <h3>
      Role Membership</h3>
    <asp:Label ID="Msg" ForeColor="maroon" runat="server" /><br />
    <table cellpadding="3" border="0">
      <tr>
        <td valign="top">
          Roles:</td>
        <td valign="top">
          <asp:ListBox ID="RolesListBox" runat="server" Rows="8" AutoPostBack="true" /></td>
        <td valign="top">
          Users:</td>
        <td valign="top">
          <asp:ListBox ID="UsersListBox" DataTextField="Username" Rows="8" SelectionMode="Multiple"
            runat="server" /></td>
        <td valign="top">
          <asp:Button Text="Add User(s) to Role" ID="AddUsersButton" runat="server" OnClick="AddUsers_OnClick" /></td>
      </tr>
      <tr>
        <td valign="top">
          Users In Role:</td>
        <td valign="top">
          <asp:GridView runat="server" CellPadding="4" ID="UsersInRoleGrid" AutoGenerateColumns="false"
            GridLines="None" CellSpacing="0" OnRowCommand="UsersInRoleGrid_RemoveFromRole">
            <HeaderStyle BackColor="navy" ForeColor="white" />
            <Columns>
              <asp:TemplateField HeaderText="User Name" >
                <ItemTemplate>
                  <%# Container.DataItem.ToString() %>
                </ItemTemplate>
              </asp:TemplateField>
              <asp:ButtonField Text="Remove From Role" ButtonType="Link" />
            </Columns>
          </asp:GridView>
        </td>
      </tr>
    </table>
  </form>
</body>
</html>

Hinweise

Die AddUsersToRoles -Methode wird von der Roles -Klasse aufgerufen, um mindestens einem Benutzer eine oder mehrere Rollen in der SQL Server-Datenbank zuzuordnen, die in der Konfigurationsdatei der ASP.NET Anwendung (Web.config) angegeben sind. Diese Methode wird von den AddUserToRoleMethoden , AddUserToRoles, AddUsersToRoleund AddUsersToRoles der - Roles Klasse aufgerufen.

Die Datenbankupdates, die während des Aufrufs der AddUsersToRoles -Methode ausgeführt werden, werden innerhalb einer Transaktion vorgenommen. Wenn ein Fehler auftritt, z. B. ein Benutzername, der sich bereits in einer angegebenen Rolle befindet, wird für die Transaktion ein Rollback ausgeführt, und es werden keine Updates ausgeführt.

Wenn der SqlRoleProvider mit SqlMembershipProviderverwendet wird und einer der angegebenen Benutzernamen nicht in der Datenbank vorhanden ist, wird der Benutzername automatisch der Datenbank hinzugefügt.

Benutzernamen und Rollennamen dürfen keine Kommas enthalten.

Gilt für:

Weitere Informationen