1

文字列の一部を含むグループについて、LDAP を使用して Active Directory にクエリを実行し、各グループに含まれるユーザーの数を表示したいと考えています。

これを行うために、LINQ 構文の使用を楽しんでいるので、LINQ to LDAPを調べていました。この方法でクエリを実行するための 2 番目のステップは、構成をセットアップしてクエリを実行することです。

var config = new LdapConfiguration();
config.ConfigureFactory("serverName.intranet");
using (var context = new DirectoryContext(config))
{
   context.Log = Console.Out;

   var user = context.Query<User>()
                .Where(u => u.FirstName == "Erwin")
                .FirstOrDefault();

   Console.WriteLine(user.Group);      
}

しかし、最初のステップはモデルを定義することです。これは私が立ち往生するところです。Groupモデルとモデルを定義したいと思いますUser。そうすれば、別の を照会して取得できますGroupsUsers別のクエリは、そのようなグループに含まれるの数と種類を見つけることです。

残念ながら、LINQ to LDAP を使用してモデルをセットアップする方法がわかりません。今、私はいくつかのランダムな属性を持つこれを持っています:

using LinqToLdap.Mapping;
using System;
using System.Security.Principal;

[DirectorySchema("CN=Users")]
public class User
{
   [DirectoryAttribute("givenName")]
   public string FirstName { get; set; }

   [DirectoryAttribute("sn")]
   public string LastName { get; set; }

   [DirectoryAttribute("physicalDeliveryOfficeName")]
   public string Office { get; set; }
}

そして、私はエラーが発生します:

Response=[ ErrorMessage: 000020D6: SvcErr: DSID-03100754, problem 5012 (DIR_ERRO
R), data 0
, MatchedDN: , ResultCode: OperationsError, RequestId: , Controls: , Referrals:
 ]   Message=An operation error occurred.    Data=...        InnerException={ }
     TargetSite={ }  StackTrace=   at System.DirectoryServices.Protocols.LdapCon
nection.ConstructResponse(Int32 messageId, LdapOperation operation, ResultAll re
sultType, TimeSpan requestTimeOut, Boolean exceptionOnTimeOut)
   at System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryReq
uest request, TimeSpan requestTimeout)
   at LinqToLdap.QueryCommands.FirstOrDefaultQueryCommand.Execute(DirectoryConne
ction connection, SearchScope scope, Int32 maxPageSize, Boolean pagingEnabled, I
LinqToLdapLogger log, String namingContext)
   at LinqToLdap.DirectoryQueryProvider.Execute(Expression expression)  HelpLink
=null   Source=System.DirectoryServices.Protocols       HResult=-2146233088

Unhandled Exception: System.DirectoryServices.Protocols.DirectoryOperationExcept
ion: An operation error occurred.
   at System.DirectoryServices.Protocols.LdapConnection.ConstructResponse(Int32
messageId, LdapOperation operation, ResultAll resultType, TimeSpan requestTimeOu
t, Boolean exceptionOnTimeOut)
   at System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryReq
uest request, TimeSpan requestTimeout)
   at LinqToLdap.QueryCommands.FirstOrDefaultQueryCommand.Execute(DirectoryConne
ction connection, SearchScope scope, Int32 maxPageSize, Boolean pagingEnabled, I
LinqToLdapLogger log, String namingContext)
   at LinqToLdap.DirectoryQueryProvider.Execute(Expression expression)
   at LinqToLdap.QueryProvider.Execute[TResult](Expression expression)
   at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source)
   at LinqToLdap.Program.Main(String[] args) in c:\LinqToLdap\LinqToLdap\Program
.cs:line 18

DirectorySchemaを正しい方法で定義していないためだと思います。LINQ to LDAP モデルとクエリの設定を手伝ってくれる人はいますか?

4

0 に答える 0