鉴于:
kernel.Bind<IClientFactory>()
.ToProvider<ClientFactoryProvider>()
.InSingletonScope();
kernel.Bind<IClient>()
.ToProvider<ClientProvider>()
.InRequestScope();
public class ClientProvider : Provider<IClient>
{
private readonly IClientFactory _factory;
public ClientProvider(IClientFactory factory)
{
_factory = factory;
}
protected override IClient CreateInstance(IContext context)
{
return _factory.Create();
}
}
而且IClient是IDisposable。
问题是在请求结束时没有调用它。使用工厂方法时,一切正常。在为IClient(pass-thru)创建包装器时,它也可以工作。
任何想法为什么?
更清楚的是,IClient实际上是IRedisClient而IClientFactory是IRedisClientsManager,两者都来自ServiceStack。