【问题标题】:"Session Variable" in vb.netvb.net 中的“会话变量”
【发布时间】:2014-01-21 19:59:43
【问题描述】:

我有 4 页的表格 (VS2012)。第一个表单根据搜索填充数据。第二页只是一个中间页,其中包含指向form 3form 4 的链接。当form 3 关闭时,此中间页面打开。这个中间页面的工作是保存变量并传递给form 3form 4。我正在尝试使用会话变量而不是查询字符串。

  1. 我可以在从表单 1 作为查询字符串传递的中间页面中创建会话变量吗?
  2. 我可以读取表格 3 和表格 4 中的这些会话变量吗?
  3. 我会在 Page_Load 事件中写入会话变量吗?
  4. 在使用会话变量时我还应该考虑什么?

我希望我已经正确地提供了所有信息。

【问题讨论】:

  • 1.yes 2.yes 3.yes 4.nothing

标签: asp.net vb.net session-variables


【解决方案1】:

前 3 个问题的答案很简单:是、是、是。
至于最后一个问题:使用 Session 变量时要注意:

  • 服务器上的每个用户都使用会话内存,因此它会影响可伸缩性,换句话说,会影响每个服务器可以服务的用户数量。
  • 如果您在服务器场中托管应用程序,则需要确保场中的所有服务器都可以访问相同的会话状态。在这种情况下,您可能需要切换到另一个 Session 状态提供程序(默认是 Session 变量存储在服务器的内存中)。
  • 会话在一段时间不活动后超时。所以要做好准备,当用户请求页面时,内存可能会消失。
  • 如果用户想重新开始,您可能希望为用户提供清除会话变量的选项。

有关会话内存的详细概述,请参阅 MSDN 上的 page

【讨论】:

  • 感谢 Markus,帮了大忙。
【解决方案2】:

当您使用会话变量时,您将不再需要您的第二页。会话数据存储在服务器上的应用程序范围内。

当您保存/持久化数据时,您可以简单地保存如下

Session("PatronID") = "GVPatID"

当您加载/检索数据时,您可以简单地使用它

lblPatID.Text = Session("PatronID")

存储在会话变量中的任何有效数据都可以保留,直到用户浏览会话过期、超时或窗口关闭,此时会话被视为结束。

最好按如下方式处理会话数据

Session.Abandon

【讨论】:

    【解决方案3】:
    1. 是的,您可以在中间页面中创建会话变量
    2. 是的,您可以在应用中的任何表单中读取这些会话变量
    3. 是的,您可以在 page_load 事件中编写添加/更新会话变量
    4. 您应该在应用程序中使用完会话变量后删除它们

    希望这会有所帮助。

    【讨论】:

    • 我需要在 page_load 事件中添加和读取会话变量,对吗?
    • 不,它不仅限于 Page_Load 事件。您可以在任何页面或控件事件中操作会话变量。
    • 我的中间页面中有“Session("PatronID") = GVPatID"(表格 2)然后我有 "lblPatID.Text = CType(Session.Item("PatronID"), String)"在表单 3 中。当我关闭表单 3 时,表单 2 打开,但会话变量未显示在表单 2 中。我是否还必须在表单 2 中添加读取会话变量?
    • 假设 GVPatID 不为空,您可以像这样初始化会话变量:Session("PatronID") = GVPatID 然后像这样检索它:lblPatID。 Text = CType(Session("PatronID"), String) 如果不再使用它,您可以像这样删除它:Session.Remove("PatronID")
    • 如果我回答了您的问题,请将此标记为答案。谢谢!
    【解决方案4】:

    感谢扎伊和莫。 我对表单 2 页面加载事件进行了以下更改,它以我想要的方式工作 GVPatID = Request.QueryString("value1")

        If GVPatID = Nothing Then
            lblPatID.Text = CType(Session("PatronID"), String)
        Else
            Session("PatronID") = GVPatID
            lblPatID.Text = GVPatID
        End If
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 2012-09-25
      • 1970-01-01
      • 2012-05-22
      • 2013-02-07
      • 2011-11-09
      相关资源
      最近更新 更多