【问题标题】:How to filter a specific group in Active Directory from asp.net c# application如何从asp.net c#应用程序过滤Active Directory中的特定组
【发布时间】:2018-08-29 20:28:41
【问题描述】:

以下代码可用于获取我的 AD 中列出的所有用户。现在我需要将结果限制在一组。如何修改以下内容以仅获取 Active Directory 中“Everybody”组的成员?

代码背后:

protected void Page_Load(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();

        dt.Columns.AddRange(new DataColumn[4]
        {
            new DataColumn("givenName", typeof (string)),
            new DataColumn("sn", typeof (string)),
            new DataColumn("mail", typeof (string)),
            new DataColumn("department", typeof (string))
        });

        using (var context = new PrincipalContext(ContextType.Domain, null))            
        {
            using (var searcher = new PrincipalSearcher(new UserPrincipal(context)))
            {
                foreach (var result in searcher.FindAll())
                {
                    DirectoryEntry de = result.GetUnderlyingObject() as DirectoryEntry;
                    var clsuser = new ClsUsers();
                    dt.Rows.Add
                    (
                        Convert.ToString(de.Properties["givenName"].Value), 
                        Convert.ToString(de.Properties["sn"].Value),
                        Convert.ToString(de.Properties["mail"].Value),
                        Convert.ToString(de.Properties["department"].Value)
                    );
                }

                grdvList.DataSource = dt;
                grdvList.DataBind();
            }
        }
    }

这是它正在填充的网格视图:

<asp:GridView ID="grdvList" runat="server" AutoGenerateColumns="False" >
    <Columns>
        <asp:BoundField DataField="givenName" HeaderText="GivenName" ReadOnly="True" />
        <asp:BoundField DataField="sn" HeaderText="sn" ReadOnly="true" />                    
        <asp:BoundField DataField="mail" HeaderText="Email" ReadOnly="true" />
        <asp:BoundField DataField="department" HeaderText="Department" ReadOnly="true" />
    </Columns> 
</asp:GridView>

我尝试通过更改上下文变量来指定“Everybody”来稍微修改代码,但出现错误: 尝试的代码模式:

using (var context = new PrincipalContext(ContextType.Domain, null, "CN=Everybody", "DC=mydomain", "DC=org"))

这是错误:

System.DirectoryServices.AccountManagement.PrincipalOperationException: '发生本地错误。

【问题讨论】:

标签: c# asp.net active-directory


【解决方案1】:

在查看了 SO 上的十几个其他主题后,我今天早上偶然发现了一个回答了我的问题的主题...Get Members of an AD Group

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    相关资源
    最近更新 更多