【问题标题】:ASP Session Variable Lost On Some ComputersASP 会话变量在某些计算机上丢失
【发布时间】:2014-03-24 08:19:48
【问题描述】:

我遇到了 ASP 会话对象的问题。 我在一页上设置了一个会话变量:

Session("QuestionAmount") = 1

在某些计算机上,当我在站点的另一个页面上使用此变量时,它可以正常工作,但在其他计算机上它似乎会丢失。我还注意到,在某些无法运行的计算机上,它可以在其他浏览器上运行。 因此,我的问题是: 不是所有浏览器都支持会话变量吗? (我会认为他们是)因为谷歌浏览器令人惊讶地是它工作最少的浏览器。有什么办法可以解决这个问题吗?

【问题讨论】:

  • ASP Session 对象使用 cookie 来维护它的状态查看浏览器的 cookie 接受策略。
  • 也可以配置为无烹饪的
  • @Def 再次引用.net ?? asp-classic 中“开箱即用”的会话不提供无 cookie 选项,您正在考虑默认不支持的定制解决方案。
  • 在不工作的计算机上启用了 Cookies
  • 我能想到的唯一会影响的就是 cookie,如果您确定您的会话 cookie 没有被阻止并且抱歉,但我没有想法,除非您可以提供更多关于你的设置。

标签: session asp-classic session-variables


【解决方案1】:

感谢大家的帮助。最后,我只是恢复到在 url 中存储数据并使用 request.querystring,它工作得很好。尽管您的所有贡献都已阅读并有助于将来参考:)

【讨论】:

    【解决方案2】:

    Session 是一个与它一起存在的服务器对象。您可以在 web.config 中配置会话,您可以通过多种方式对其进行配置。如果它存储在进程中,它可能会导致 sql 中出现另一种问题。可能只是那里的超时,因为用户长时间空闲(默认生命周期20分钟)for more information about seesion go there

    尝试找出会话是曾经开始还是以

    结束
    protected void Session_Start(object sender, EventArgs e)
        {
            // Code that runs when a new session is started
    
        }
    protected void Session_End(Object sender, EventArgs e) 
      {
       // your code here
      }
    

    在我看来这是会话配置的问题。尝试将 Session 配置为将自身存储在 SqlServer 中。此类 cfg 的示例可以在我给出的主题中找到。

    【讨论】:

    • @Lankymart 是的,它是 asp-classic,但以下有关 Session 的信息对于 asp-classic 也是完全正确的。只需将 C# 转换为 VBS/ASP :)
    • @Zam 不是,这取决于您在 asp-classic 上运行的 IIS 版本。例如,会话开始和结束是在您的 asp 应用程序下的 global.asa 中配置的,而不是在 web.config 文件中。信息完全不匹配,更不用说使用错误的编程语言了。
    • @Lankymart 我说可以在 web.config 中配置会话属性。但要求弄清楚会话是在 global.asax 文件中开始还是结束。我的建议中有 2 点出了什么问题。
    • @Def 认真的吗? global.asa 不是 global.asax 你在为我表达我的观点。
    • 我必须同意@Lankymart 的观点,这个问题是关于经典 ASP 的,所以解释Session in Ruby on Rails 的答案同样无效,这个也无效。经典 ASP 和 ASP.NET 是不同的语言,认为它们相同是很常见的错误。
    猜你喜欢
    • 2011-03-09
    • 2016-09-03
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2020-01-09
    相关资源
    最近更新 更多