gpt4 book ai didi

ninject - 使用 ServiceStack 和 NinjectContainerAdapter 的一次性请求生命周期

转载 作者:行者123 更新时间:2023-12-02 00:13:02 26 4
gpt4 key购买 nike

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

根据文档,这样做的默认方式是:

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

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

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

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

最佳答案

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

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

关于ninject - 使用 ServiceStack 和 NinjectContainerAdapter 的一次性请求生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14597569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com