0

SimpleInjector を Inversion of Control コンテナーとして使用する LinqToLdap GIT サンプル プロジェクトをダウンロードし、そのコードを Castle Windsor に翻訳しました。私の設定コードは次のようになります。

container.Register(Component.For<ILdapConfiguration>()
            .UsingFactoryMethod(() =>
            {
                var config = new LdapConfiguration()
                .AddMapping(new UserImageMapping())
                .AddMapping(new UserMapping());

                config.ConfigurePooledFactory("my.ad.server");
                return config;
            }));


ディレクトリ コンテキストは次のように登録されます。

 container.Register(Component.For<IDirectoryContext>()
            .UsingFactoryMethod(() => new DirectoryContext(container.Resolve<ILdapConfiguration>())).LifestyleSingleton());


私が遭遇したこの問題は、次のようなクエリで DirectoryContext を使用する場合です。

var photo =  context.Query<UserPhoto>().FirstOrDefault(u => u.EmployeeId == userQuery.Id);


コンテキスト オブジェクトには、それに関連付けられたプロバイダーのリストがあり、これらのプロバイダーの数は、クエリが実行されるたびに増加し続けます。数分間の使用で数百になるほどで​​す。コンテキストの正しい破棄と関係があると思いますが、コンテキストを明示的に破棄すると、コンテキストが破棄され、何らかの理由で新しいコンテキストが作成されないため、後続のクエリは失敗します。誰でも助けることができますか?

4

1 に答える 1

0

LinqToLDAP コードのわずかなバグであることが判明しました。開発者はこの問題を特定しており、次のリリースで修正される予定です! (R 3.3.2)

于 2014-11-25T15:12:11.270 に答える