1
使用OWIN和AutoFac作为IoC容器,我试图使用依赖注入将HttpContext注入会话状态存储机制,但HttpContext.Session为null。另外,我不确定它是否重要,但是我试图将HttpContextWrapper(HttpContext.Current)注入到的类是作为nuget包构建的外部dll。使用依赖注入HttpContext会话为空
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为空,我该如何解决它?
谢谢!这工作,我曾尝试过,但是很愚蠢,仍然注册.WithParameter(新TypedParameter(typeof(HttpContextBase),新HttpContextWrapper(HttpContext.Current)))让Autofac解析HttpContextBase后。事实证明,你也可以注册AutofacWebTypesModule,它和你的建议一样,再加上一些。 – csalzsieder