【问题标题】:session in class. how can i access?课堂上的会话。我怎样才能访问?
【发布时间】:2010-01-11 08:22:55
【问题描述】:

我在我的项目中添加了一个类,当我输入会话时,它没有进入智能模式。 session 可以在课堂上使用吗?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    据我所知,您正在寻找

    using System.Web;
    
    // ...
    
    
    var currentSession = HttpContext.Current.Session;
    var myValue = currentSession["myKey"];
    

    【讨论】:

    • 抱歉 mr.herzmeister httpcontext 没有得到。我在课堂上说我想你明白我的意思。我也用 sapce 这个名字,即使它没有来
    • 它出现在我想要的课程中的 aspx 页面中
    • 你的意思是你的班级不是网站的一部分吗?是图书馆项目吗?然后您必须添加对 System.Web 程序集的引用。没有它,同名的命名空间也存在,但类型很少。
    • 我正在研究三个轮胎架构,因为我在一个解决方案资源管理器中完成了三个项目。一个项目是数据层(它是一个类),因为我没有得到会话
    • 在 Visual Studio 中,首先确保您的类库项目不是针对客户端配置文件,而是使用完整的 .net 框架。然后右键单击您的类库项目并选择“添加引用”。之后,在 .NET 选项卡下选择“System.Web”Assembly dll。然后,您应该能够通过 HttpContext.Current 访问会话。
    【解决方案2】:

    使用这个System.Web.HttpContext.Current.Session["Key"];

    【讨论】:

      【解决方案3】:

      您从集合中获得的是对 Object 的引用,您必须将引用转换为特定类以获得可用于访问类成员的引用:

      ((MyClass)Session["TheKey"]). ...
      

      如果问题是您根本无法访问 Session 对象,则需要对当前上下文的引用。你可以使用静态属性HttpContext.Current

      HttpContext.Current.Session["TheKey"]
      

      要访问 HttpContext 类,您需要告诉编译器它在哪里:

      using System.Web;
      

      您也可以不使用using 指令直接指定完整的命名空间:

      System.Web.HttpContext.Current.Session["TheKey"]
      

      您还需要在项目中添加对 System.Web.dll 库的引用。

      【讨论】:

      • 先生。 Guffa 能否请您详细告诉我,谢谢您的回复。我正在从外部类库访问
      【解决方案4】:

      在你的类库项目中,添加对System.Web的引用

      然后像前面的例子一样使用Session

      它不需要是一个 ASP.NET 应用程序,一个类库就可以了。

      我已经看到它甚至在 WinForms 应用程序中使用过,因为它仍然有效。

      【讨论】:

      • ya Mr.Leon 我添加了参考 system.web 我只得到了 HttpContext 但我没有得到“Current.Session”谢谢你的参考