会议变得空无一人

时间:2012-06-04 02:56:26

标签: asp.net vb.net

我遇到了一个问题,因为我的用户在多选在线考试中出现频率。

我们已在单个页面上实施了考试,并在用户选择该选项时将该选项存储在视图状态中。在选择下一个问题页面时再次加载。有时"如果会话("用户")="""结果是真的,用户退出。

我在第一次加载页面时设置了会话

Session.Timeout = 340

同样在Web配置文件中,会话超时为2小时。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Session("User") = "" Then
        Response.Redirect("Default.aspx")
    Else
        //Processing and updating view state.

请查看此内容

3 个答案:

答案 0 :(得分:2)

可能是AppPool获得回收的原因。以下是一些原因:

  1. 您的sessionState超时已过期
  2. 您更新了导致AppDomain回收的web.config或其他文件类型
  3. IIS中的AppPool回收
  4. 您使用大量文件更新您的网站,并且ASP.NET会主动销毁您的AppDomain以重新编译并保留内存。
  5. 或者可以删除任何文件或目录。
  6. 价:Losing Session State

    解决方案:使用stateserver而不是InProc。

    <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424"   cookieless="UseCookies" timeout="10" regenerateExpiredSessionId="true" />
    

    http://msdn.microsoft.com/en-us/library/ms972429.aspx

答案 1 :(得分:0)

答案 2 :(得分:0)

我之前遇到过这个问题。请在解决方案中添加此代码。

 public int SessionLengthMinutes
    {
        get { return Session.Timeout; }
    }
    public string SessionExpireDestinationUrl
    {
        get { return "../Login.aspx"; }
    }
    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);
        this.Controls.Add(new LiteralControl(
        String.Format("<meta http-equiv='refresh' content='{0};url={1}'>",
        SessionLengthMinutes * 60, SessionExpireDestinationUrl)));
    }

通过此,您可以检查您的页面从主页面重定向到登录页面的时间。然后我们可以进一步工作并解决问题。 希望它适合你。