3

将 Ninject 与 ServiceStack 一起使用时,我将如何指定对象的生命周期是按请求进行的,并在必要时调用任何 IDisposable.Dispose 方法?

根据文档,执行此操作的默认方式是:

container.RegisterAutoWiredAs<MyType,IMyType>().ReusedWithin(ReuseScope.Request); 

但是,我必须将NinjectContainerAdapter用于我的项目。通常我会安装Ninject.Web.Common并编写:

kernel.Bind<IMyType>().To<MyType>().InRequestScope()

我的实例将在请求结束时被处理掉。我将如何在 ServiceStack 中执行此操作,例如在自托管场景中?

4

1 回答 1

3

您必须INinjectHttpApplicationPlugin为 ServiceStack 实现一个。在该方法中object GetRequestScope(IContext context);,您必须返回一些具有请求生命周期的对象(相当于HttpContext.Current))

可能您可以添加一个对象HostContext并将其作为范围返回。最好让该对象实现INotifyWhenDisposed并在请求结束时处理它,以便在请求后立即释放对象,而不是等待对象被垃圾收集。

于 2013-01-30T12:01:16.347 回答