Ninject InRequestScope仅在使用Provider <t>时不起作用

时间:2016-03-29 23:40:20

标签: c# ninject servicestack.redis

鉴于:

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。

0 个答案:

没有答案