如何在依赖项注入中设置会话值

本文关键字:设置 会话 注入 依赖 | 更新日期: 2023-09-27 18:26:54

当尝试访问会话值时,我使用此代码并获取HttpExeption:

protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        var builder = new ContainerBuilder();
        builder.RegisterControllers(Assembly.GetExecutingAssembly());
        builder.RegisterControllers();
        builder.Register(c => GetTransform()).As<ITransform>();
        var container = builder.Build();
        DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
    }
    private ITransform GetTransform()
    {
        if (Session["Transform"] == null)
            Session["Transform"] = new Transform();
        return (ITransform)Session["Transform"];
    }

如何使用Autofac解析/注入为控制器设置会话值

如何在依赖项注入中设置会话值

GetTransform方法中访问的Session属性是在Global.asax.cs中定义的HttpApplication对象的属性。

我假设这不是您感兴趣的会话对象。您想要的(我假设)是绑定到当前请求的会话对象(这与从控制器内部访问Session属性相同)。

以下是您的操作方法:

private ITransform GetTransform()
{
    var session = System.Web.HttpContext.Current.Session;
    if (session["Transform"] == null)
        session["Transform"] = new Transform();
    return (ITransform)session["Transform"];
}