【问题标题】:Why would the value of the Session object go away?为什么 Session 对象的值会消失?
【发布时间】:2010-05-27 23:46:49
【问题描述】:

在 ASP.NET/VB.NET 2005 中,我创建了一个包含两个表单的小型 Web 应用程序。

默认有一个按钮、一个文本框和一个链接。

当您按下按钮时,文本框中的任何内容都会被放入会话中。

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    System.Web.HttpContext.Current.Session("mykey") = Me.TextBox1.Text
End Sub

当你点击链接时,它的 NavigateURL 属性是“~/Retrieve.aspx”

在检索页面上,它将信息从会话中提取出来(即,您在文本框中键入的任何内容)。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim myValue As String = CType(System.Web.HttpContext.Current.Session("mykey"), String)
    Response.Write(myValue)
End Sub

现在它可以在我的机器上运行,并且当部署到生产网站服务器时,如果我在那里远程运行浏览器,它可以正常工作 - 您在第一页上键入的内容会出现在第二页上。

但是当我从我的机器运行它生产网络服务器时,第二页总是空白。

为什么?

这似乎不是超时问题 - 全新的 web.config 采用默认值。

任何指针将不胜感激!谢谢!

【问题讨论】:

    标签: asp.net vb.net


    【解决方案1】:

    所以当您将第一页从您的机器重定向到生产机器时它不起作用?

    这是因为会话存储在服务器本身上,而不是在您的浏览器中。所以你的会话存在于你的机器上而不是服务器上。

    如果您希望它跨机器持久存在,那么您需要使用 cookie(存储在您的浏览器中)或拥有某种共享状态服务器,该服务器使用共享数据库来存储会话数据。

    【讨论】:

    • @Eric Petroelje 非常正确。会话是机器本地的(网络农场和 SQL 会话状态除外)。会话使用的 cookie 只是为了让本地服务器有一个密钥来检索会话状态。
    • 我从没想过这真的是 OP 尝试过的。 :) +1 是最简单的打结方式。 :)
    【解决方案2】:

    这可能是您本地计算机上的 cookie 问题吗?是切换域名还是应用池在回收?这些是我对几个起点的建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 1970-01-01
      相关资源
      最近更新 更多