【发布时间】:2017-03-27 18:56:08
【问题描述】:
使用 OWIN 和 AutoFac 作为 IoC 容器,我尝试使用依赖注入将 HttpContext 注入到会话状态存储机制中,但 HttpContext.Session 为空。另外,我不确定这是否重要,但我尝试将 HttpContextWrapper(HttpContext.Current) 注入的类是我构建为 nuget 包的外部 dll。
Autofac 注册,注册我的 Autofac 模块
public static void Register(IAppBuilder app)
{
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterModelBinderProvider();
builder.RegisterFilterProvider();
builder.RegisterModule(new GatewayModule());
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
app.UseAutofacMiddleware(container);
}
以及autofac模块的代码:
public class GatewayModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<SessionStateTokenStore>()
.WithParameter(new TypedParameter(typeof(HttpContextBase), new HttpContextWrapper(HttpContext.Current)))
.As<ITokenStore>().InstancePerRequest();
}
}
但是,当我查看我的 SessionStateTokenStore 时,_httpContext.Session 为空。这是我的调试器中的监视窗口的图像。 HttpContext.Session is null
为什么 HttpContext.Session 为空,我该如何解决?
【问题讨论】:
标签: c# asp.net session autofac httpcontext