我下载了LinqToLdap GIT示例项目,该项目使用SimpleInjector作为Inversion of Control容器,并将代码转换为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());
我遇到的这个问题是在查询中使用目录上下文时,例如:
var photo = context.Query<UserPhoto>().FirstOrDefault(u => u.EmployeeId == userQuery.Id);
上下文对象具有与其关联的提供程序列表,并且每次进行查询时,这些提供程序的计数都会不断增加。如此之多,以至于使用几分钟后就有数百个。我想这与正确处置上下文有关,但是当我显式处置上下文时,后续查询会失败,因为上下文已释放并且由于某种原因未创建新的上下文。谁能帮忙?
原来是LinqToLDAP代码中的一个小错误。开发人员已确定该问题,并将在下一个版本中修复!(R 3.3.2)