gpt4 book ai didi

c# - Ninject 的 Httpcontext.Session 始终为 null

转载 作者:太空狗 更新时间:2023-10-29 21:19:02 24 4
gpt4 key购买 nike

我像这样使用 ninject 注入(inject) httpcontext

private void RegisterDependencyResolver()
{
HttpContextBase context = new HttpContextWrapper(HttpContext.Current);
var kernel = new StandardKernel();
kernel.Bind<ISession>().To<SessionService>()
.InRequestScope()
.WithConstructorArgument("context", ninjectContext => context);

DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
}

RegisterDependencyResolver() 在 application_start 方法中调用。

此接口(interface)被注入(inject)到处理 session 的类的构造函数中。

问题是 session 从未初始化,所以我无法向其添加任何内容。

任何类似 context.session["something"] ="something"的代码都会引发空引用异常。

Application_Start 在生命周期中是否太早?我以为 .InRequestScope() 解决了这个问题,但它对我不起作用。

最佳答案

如果您在 IIS 集成模式下运行,您无权访问 Application_Start 中的任何 Http 上下文对象。

像这样尝试:

private void RegisterDependencyResolver()
{
kernel
.Bind<ISession>()
.To<SessionService>()
.InRequestScope()
.WithConstructorArgument(
"context",
ninjectContext => new HttpContextWrapper(HttpContext.Current)
);

DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
}

关于c# - Ninject 的 Httpcontext.Session 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8361511/

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