【问题标题】:Trying to get Session value in Global.asax, but it is NULL试图在 Global.asax 中获取会话值,但它是 NULL
【发布时间】:2013-04-10 16:27:08
【问题描述】:

我有一个会话,其中包含我在Main.aspx 上创建的List(of String)。在我的Global.asax 中,我执行以下代码以在Timer 被触发后检索Session 值。

  Private Sub Application_AcquireRequestState(sender As Object, e As EventArgs)
        If System.Web.HttpContext.Current.Session IsNot Nothing Then
            If Session("Products") IsNot Nothing Then
                Response.Write(Session("Products").ToString())
            End If
        End If
    End Sub

但是,Session("Products") 返回 Null 并退出 Sub。我想知道Main.aspx 中的End Sub 是否会释放Session,因此每当Timer 触发时,Session 就会为空。有什么想法吗?

【问题讨论】:

  • 您好,this 问题可能有帮助吗?

标签: asp.net vb.net session global-asax


【解决方案1】:

在您的 Main.vb 代码中,除了要继承的任何内容之外,请务必继承 System.Web.SessionState.IRequiresSessionState 接口。

这样的事情应该可以工作:

Public Class Main 
    Inherits System.Web.UI.Page, System.Web.SessionState.IRequireSessionState
' Your application code
End Class

这是一种奇怪的行为,因为 ASP.NET 网页应该已经处理了会话数据。通常,您在通用处理程序 (.ashx) 上继承 IRequireSessionState,因为它们默认不支持会话数据。

【讨论】:

  • 我不是只能在课堂上拨打inherits一次吗?因为我已经有Inherits System.Web.UI.Page 我不能添加Inherits System.Web.SessionState.IRequireSessionState。即使我删除了第一个继承并添加了继承会话,它也会显示错误Classes inherit only from other Classes
  • 您可以将您的继承声明更改为 Inherits System.Web.UI.Page, System.Web.SessionState.IRequireSessionState。我认为System.Web.UI.Page 已经继承了IRequireSessionState。注意VB.NET不支持多类继承,但是可以继承多个接口。
猜你喜欢
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-12
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
相关资源
最近更新 更多