gpt4 book ai didi

dependency-injection - 在 Ninject 2 中注入(inject) HttpContext

转载 作者:行者123 更新时间:2023-12-03 21:27:08 26 4
gpt4 key购买 nike

在我的 asp.net mvc 应用程序中,我使用 Ninject 作为 DI 框架。

我的 Controller 使用我的 HttpAccountService 来从 cookie 获取信息。
为此,我需要 HttpAccountService 中的 HttpContext.Current。
由于这是一个依赖项,因此我通过构造函数将其注入(inject):

kernel.Bind<IAccountService>()
.To<HttpAccountService>()
.InRequestScope()
.WithConstructorArgument("context", HttpContext.Current);

可悲的是,这总是绑定(bind)到相同的上下文,这使得在第一个请求完成后这个上下文变得过时了。

我应该如何正确注入(inject)我的 HttpContext?

最佳答案

WithConstructorArgument有一个需要 Func<NinjectContext,T> 的重载,即,您可以使用:

... .WithConstructorArgument("context",ninjectContext=>HttpContext.Current);



它将在请求处理中调用提供的“回调”lambda,并在该时间点获得正确的值[而不是调用另一个重载并提供在 Bind<> 处计算的常量值时间]。

(如果您不想模拟上下文,我假设您会考虑内联使用它)

关于dependency-injection - 在 Ninject 2 中注入(inject) HttpContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3617447/

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