会话状态持续存在于多台计算机上

时间:2012-12-06 20:22:32

标签: asp.net asp.net-ajax session-state

我确定它与多台计算机的持久性无关,但似乎很奇怪,第二次网站访问,会引发一个问题和问题的更新。动态加载的答案,以便在Ajax更新面板中显示。

会话互动和记录

Web.Config中:
  <sessionState mode="InProc" cookieless="UseCookies" timeout="20" cookieName="ASPNET_Quiz" />
Global.asax中:
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
    Session("test") = "true"    'Used only to create a static Session ID for references.

    If (Globals.Quiz(Session) Is Nothing) Then
        Globals.Quiz(Session) = New classes.Quiz(WebConfigurationManager.OpenWebConfiguration("~"))
    End If
End Sub

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)

    ' Fires when the session ends
    Globals.Quiz(Session) = Nothing
    Session.Remove("test")
    Session.Abandon()
End Sub
Globals.vb
Module Globals
    'Get/Set a Quiz object into the SessionState.
    Public Property Quiz(sess As HttpSessionState) As Quiz
        Get
            Return CType(sess("quiz"), Quiz)
        End Get
        Set(value As Quiz)
            sess("quiz") = value
        End Set
    End Property

End Module

我有一个带有UpdatePanel的母版页,用于根据数据库值倒计时几分钟,并且是由定时器勾选事件触发的AsyncPostBack(间隔= 1000)

内容页面有一个不同的UpdatePanel,围绕着问题&amp;该站点的答案,并且还有一个AsyncPostBack触发器(通过代码隐藏)注册到内置的RadioButtonList的SelectedIndexChanged事件。

如果只有一个人访问该网站,则没有问题。一旦另一个用户访问该网站,就会出现问题&amp;答案在Quiz对象中进行重组,然后重新调整其显示,并且基本上导致未被回答的问题显示在用户当前位置之上或之下。已经选择的答案,不会改变,但答案的顺序是重新洗牌。 Q&amp; A的随机化以SQL Server方式为基础,通过SProc。

2012-12-07更新

  • 更改了上面的所有3个代码段以反映我当前的设计
  • 此外,不确定是否重要但将内容页面UpdatePanel PostBackTrigger从AsyncPostBack更改为PostBack

问题:

  1. 有任何解决此问题的建议吗?如果重要的是,我还为该网站整合了PageRouting。
  2. 是否有更好的方法来存储.Net对象,以便它们能够在回发中存活下来?关键是问题&amp;每次调用Sproc时,都会动态排序与Quiz对象关联的Answers类。所以我需要保持它们与首次出现的顺序相同。
  3. 我应该在Application_BeginRequest而不是Session_Start中初始化测验对象吗?

0 个答案:

没有答案