【问题标题】:How can I use a session in an ASP class file?如何在 ASP 类文件中使用会话?
【发布时间】:2009-05-26 08:38:38
【问题描述】:

我正在绑定数据库中的菜单。在 SQL 查询中,我传递了

where userid="System.Web.HttpContext.Current.Session["uid"].ToString()"

它工作正常,但每次登录都是一样的。

请问我该怎么办?

【问题讨论】:

    标签: asp.net visual-studio


    【解决方案1】:

    您拥有的代码 sn-p 似乎有点偏离,因为您将所有内容都用引号括起来,该行应该沿着

    C#

    string sql = "select a,b,c from XXX where userid=" + System.Web.HttpContext.Current.Session["uid"].ToString();
    

    VB

    Dim sql As String = "select a,b,c from XXX where userid=" & System.Web.HttpContext.Current.Session("uid").ToString()
    

    这是假设会话入口 uid 已经设置好了。

    尽管考虑到文章的标题,虽然这是一个单独的类,但最好在类的构造函数中传递值或将它们设置在实例化对象的属性上,而不是从类中访问会话!如果您需要在 Web 应用程序以外的地方进行测试,例如单元测试,这将允许更好地测试代码。

    HTH

    单次

    【讨论】:

      【解决方案2】:

      首先你是如何设置会话 uid 的?

      你真的在设置它吗?您可以使用逐行调试进行跟踪,并查看自从您单击登录(按钮?)以来,您在哪里以及使用巫婆值设置该会话?

      【讨论】:

        【解决方案3】:

        如果您尝试在经典 ASP 和 ASP.Net 之间共享 Session 数据,那么这不是很容易,但是是可行的。

        有关完整详细信息,请参阅以下 MSDN 页面:http://msdn.microsoft.com/en-us/library/aa479313.aspx

        【讨论】:

          【解决方案4】:

          一个可能的问题是:

          查看您提供的示例代码,您可以在引号中调用 current.session,这意味着您正在传递字符串

          System.Web.HttpContext.Current.Session["uid"].ToString()

          在where子句中,在sql中没有任何意义。

          您需要将调用 current.session 的值附加到 sql 字符串。

          试试……

          where userid='" & System.Web.HttpContext.Current.Session("uid").ToString() & "'"
          

          ** 编辑 ** OneSHOT 在我写我的时候给出了相同的答案... :)

          【讨论】:

          • 我认为第一部分很可能在引号内,而会话调用在引号外 - 它只是部分复制/粘贴
          • @ck 好点,但如果是这种情况,那么仍然缺少连接运算符,这会在 IDE 中报告明显的语法错误,这就是为什么我认为情况并非如此。如果它是类的部分复制/粘贴,我会期望看到 userid=" & System.Web.HttpContext.Current.Session["uid"].ToString() & " 表明有更多代码来自行的开头和结尾但仍然可能是错误的;-)
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多