65.9K
CodeProject 正在变化。 阅读更多。
Home

C# 中的 AD 控制台项目(VS 2008)

starIconstarIconemptyStarIconemptyStarIconemptyStarIcon

2.00/5 (1投票)

2013 年 10 月 11 日

CPOL

2分钟阅读

viewsIcon

9299

在 ASP.NET 和 IIS 中实现 Active Directory 查询可能非常棘手,尤其是在您刚开始使用 ASP.NET、IIS 和

在 ASP.NET 和 IIS 中实现 Active Directory 查询可能非常棘手,尤其是在您刚开始使用 ASP.NET、IIS 和 DirectoryServices 命名空间时。通常,先在控制台应用程序中实现基本的查询工作,然后再将可用的代码移动到 ASP.NET 应用程序中,这样会更有帮助,一旦它完成了您需要的功能。

如何在 VS 2008 中设置 C# 控制台项目以访问 Active Directory

  1. 打开 Microsoft® Visual Studio® 2008。
  2. 从“文件”菜单中,选择“新建”,然后选择“项目”。
  3. 几秒钟后,将出现“新建项目”窗口。
  4. 在左侧的“项目类型”窗格中,展开“Visual C#”,然后选择“Windows”。
  5. 在右侧的“模板”窗格中,在“Visual Studio 安装的模板”中,选择“控制台应用程序”。
  6. 在“新建项目”窗口的右上部分(VS 2008 的新功能)有一个下拉菜单,您可以在其中选择项目将要构建的 .NET Framework 版本。对于此演示,我们将使用 .NET Framework 3.5。
  7. 为项目指定一个名称并选择其位置。我建议勾选“为解决方案创建目录”复选框,因为这使得添加其他项目(如类库和单元测试项目)更容易。
  8. 点击“确定”。

这完成了项目的基本设置,但我们还没有访问任何 AD/LDAP 类,因为它们位于默认情况下未包含的库中。在 .NET 3.5 中,有三个库:System.DirectoryServices(ADSI 对象的包装器)、System.DirectoryServices.Protocols(它使用 Windows LDAP 库 (wldap32.dll))和 System.DirectoryServices.AccountManagement(再次使用 ADSI,但侧重于帐户管理)。对于此演示,我们仅使用 System.DirectoryServices。

如何将库添加到您的项目

  1. 在 Visual Studio 中,打开“解决方案资源管理器”(从“视图”菜单中,选择“解决方案资源管理器”)。
  2. 在“解决方案资源管理器”中,选择项目(而不是解决方案)或项目的其中一个文件。这将为“项目”菜单添加额外的项目。
  3. 从“项目”菜单中,选择“添加引用”。
  4. 几秒钟后,将出现“添加引用”窗口。
  5. 在“.NET”选项卡中,向下滚动到 System.DirectoryServices,选中它,然后单击“确定”。(此时,您可以选择多个库,但我们只需要这个库)。

这使库可用于项目中的类。与 VB 不同,没有办法自动将命名空间导入到每个代码文件。

如何导入命名空间

此时,System.DirectoryServices 中的所有类都可在您的代码文件中使用。但是,您必须使用完整的命名空间名称,例如 System.DirectoryServices.DirectorySearcher。为了能够仅通过类名引用一个类,请通过在每个代码文件的顶部添加以下命令来导入命名空间

using System.DirectoryServices; 

要测试项目,请将以下代码添加到

string defaultNamingContext;
using (DirectoryEntry rootDSE = new DirectoryEntry("LDAP://RootDSE"))
{
    defaultNamingContext = rootDSE.Properties["defaultNamingContext"].Value.ToString();
}
Console.WriteLine("Accessing domain: {0}", defaultNamingContext);

Console.WriteLine("\r\nPress a key to continue...");
Console.ReadKey(true);

并按 F5 进行编译和运行。就是这样。

祝您目录服务编程顺利。

 

© . All rights reserved.