LDAPSを使用してLDAPサーバーに接続する必要があるため、DirectoryEntryの代わりにLdapConnectionを使用する必要があります。
ソースコードは次のとおりです。
SearchResponse response;
using (LdapConnection con = new LdapConnection(new LdapDirectoryIdentifier(Host, Port)))
{
if (IsSSL)
{
con.SessionOptions.SecureSocketLayer = true;
con.SessionOptions.VerifyServerCertificate =
(connection, certificate)
=> true;
}
con.Credential = new NetworkCredential(_username, _password);
con.AuthType = AuthType.Basic;
con.Bind();
if (logMessage != null)
logMessage("Connected to LDAP");
string sFilter = String.Format(
"(&(objectcategory=person)(objectclass=user){0}(!(userAccountControl:1.2.840.113556.1.4.803:=2)))",
filter
);
SearchRequest request = new SearchRequest("OU=Corp,DC=mydc,DC=com", sFilter, SearchScope.Subtree);
request.Attributes.Add(Resources.objectguid);
request.Attributes.Add(Resources.givenname);
request.Attributes.Add(Resources.sn);
request.Attributes.Add(Resources.initials);
request.Attributes.Add(Resources.samaccountname);
request.Attributes.Add(Resources.userprincipalname);
request.Attributes.Add(Resources.mail);
request.Attributes.Add(Resources.objectsid);
request.Attributes.Add(Resources.department);
request.Attributes.Add(Resources.company);
request.SizeLimit = 10;
response = (SearchResponse) con.SendRequest(request);
}
ソースコードを実行すると(外部のサードパーティソフトウェアを使用して、資格情報、ホスト、ポートなどを確認しました)、次の例外が発生します。
サイズ制限を超えました
説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーとそれがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。
例外の詳細:System.DirectoryServices.Protocols.DirectoryOperationException:サイズ制限を超えました
ソースエラー:
response = (SearchResponse) con.SendRequest(request);
[DirectoryOperationException: The size limit was exceeded] System.DirectoryServices.Protocols.LdapConnection.ConstructResponse(Int32
messageId、LdapOperation操作、ResultAll resultType、TimeSpan requestTimeOut、ブール値exceptionOnTimeOut)+2385 System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryRequest request、TimeSpan requestTimeout)+499 System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryRequest request)+50 UserSearchProvider .ADUserSearchProvider.QueryStore(UserSearchCriteriaCollection基準、アクション
1 logMessage) in c:\Users\stemarie\Documents\Visual Studio 2012\Projects\Idealink.Modules\UserSearchProvider\UserSearchProvider\ADUserSearchProvider.cs:298 UserSearchProvider.UserSearchProvider.QueryAndSort(UserSearchCriteriaCollection criterias, Action
1 logMessage)c:\ Users \ stemarie \ Documents \ Visual Studio 2012 \ Projects \ Idealink.Modules \ UserSearchProvider \ UserSearchProvider \ UserSearchProvider.cs:77 UserSearchProvider.UserSearchProvider.Search(UserSearchCriteriaCollection基準、アクション1 logMessage) in c:\Users\stemarie\Documents\Visual Studio 2012\Projects\Idealink.Modules\UserSearchProvider\UserSearchProvider\UserSearchProvider.cs:33 UserSearchProvider.UserSearchService.Search(UserSearchCriteriaCollection criterias, Action
1 logMessage)in c:\ Users \ stemarie \ Documents \ Visual Studio 2012 \ Projects \ Idealink.Modules \ UserSearchProvider \ UserSearchProvider \ UserSearchService.cs:44 UserSearchProviderTest._Default.Page_Load(Object sender、EventArgs e)in c:\ Users \ stemarie \ Documents \ Visual Studio 2012 \ Projects \ Idealink.Modules \ UserSearchProvider \ UserSearchProviderTest \ Default.aspx.cs:28
私を混乱させる部分は、最大サイズ制限を指定したことです。100を超えるエントリは必要ありません。制限したいのですが、ただし、SizeLimitを1に指定しても、ライブラリは常にエラーをスローします。
この問題に関する洞察/提案はありますか?私たちはこれを機能させることに非常に近づいており、この最後の問題を解決する必要があります。