Bor*_*ens 14 dependency-injection ninject httpcontext
在我的asp.net mvc应用程序中,我使用Ninject作为DI框架.
我的控制器使用我的HttpAccountService从cookie获取信息.为此,我需要HttpAccountService中的HttpContext.Current.由于这是一个依赖项,我通过构造函数注入它:
kernel.Bind<IAccountService>()
.To<HttpAccountService>()
.InRequestScope()
.WithConstructorArgument("context", HttpContext.Current);
Run Code Online (Sandbox Code Playgroud)
遗憾的是,这总是绑定到相同的上下文,这使得在第一个请求完成后,这个上下文变得过时了.
我应该如何正确地注入我的HttpContext?
Rub*_*ink 23
WithConstructorArgument有一个过载,需要一个Func<NinjectContext,T>,即你可以使用:
...
.WithConstructorArgument("context",ninjectContext =>HttpContext.Current);
它将在请求处理中调用提供的'回调'lambda并在该时间点获得正确的值[与您调用另一个重载并提供在Bind<>时间计算的常量值相反].
(如果你不是试图模拟上下文,我假设你会考虑使用它内联)
| 归档时间: |
|
| 查看次数: |
3670 次 |
| 最近记录: |