アセンブリ
コード別にアセンブリを追加しない場合は web.config に System.DirectoryServices を追加する必要があります。(今回は不要)
PublicKeyToken を確認するには C:\Windows\assembly を開きます。
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<system.web>
<compilation>
<assemblies>
<add assembly="System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
</compilation>
</system.web>
</configuration>
コード
DirectorySearcher クラスは必要な値がデフォルトで入ります。
<%@ PAGE LANGUAGE="C#" %>
<%@ Assembly Name="System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %>
<%@ Import Namespace="System.DirectoryServices" %>
<html>
<head>
<title>AD get_domain</title>
<script runat="server">
void start_search(object sender, EventArgs e)
{
String res = "";
String s = txt_search.Text;
if(s.Length == 0){ return; }
try
{
using (DirectorySearcher ds = new DirectorySearcher(s))
{
ds.PageSize = 1000;
SearchResultCollection srcol = ds.FindAll();
for(int i=0; i<srcol.Count; i++)
{
res += srcol[i].Path+"<br>";
}
}
}
catch(ArgumentException ae)
{
res = ae.Message;
}
lbl_result.Text = res;
}
</script>
</head>
<body>
<form runat="server">
<asp:TextBox id="txt_search" Columns="50" Rows="1" Text="cn=Administrator" runat="server" />
<asp:Button id="btn_search" Text="Search" OnClick="start_search" runat="server" /><br>
<asp:Label id="lbl_result" Text="" runat="server" />
</form>
</body>
</html>
実行結果
検索結果が複数ある場合は複数行表示されます。
LDAP://CN=Administrator,CN=Users,DC=test,DC=lan
参考