0

我有会话记录用户的登录信息,但由于我的应用程序结束而丢失。

从本地主机运行我的代码我没有任何问题,但是现在我已经在现场享用午餐,我很快就会在几分钟内失去会话。

我决定记录 Gobal.asax 文件并记录会话何时开始和结束,我的应用程序何时开始和结束,以及是否有任何应用程序错误。

当用户浏览该网站时,会检查会话是否为空,如果会话不为空,我会为该页面注册隐藏字段以使用我的会话值,但如果会话为空,我会放弃它们并重定向到我的登录页面。

这是我的日志显示的内容:

[11:52:25]   Application has started 
[11:52:25]   Session has started 
[11:52:35]   Use session 
[11:52:45]   Use session 
[11:52:54]   Use session 
[11:52:59]   Use session 
[11:53:5 ]   Use session 
[11:53:10]   Use session 
[11:53:15]   Use session 
[11:53:18]   Session has ended 
[11:53:18]   Application has ended 
[11:53:22]   Application has started 
[11:53:23]   Session has started 
[11:53:23]   Abandon Session 
[11:53:23]   Session has ended 
[11:53:23]   Session has started

我在同一个超链接上点击 7 次浏览了我的网站,基本上只是刷新了我所在的页面,但由于未知原因,会话丢失并且应用程序已结束。从日志中可以看出,这一切都在一分钟内完成。

单击导航链接时,这是检查会话的代码。

    protected override void OnInit(EventArgs e)
    {
        LogClass Log = new LogClass();

        if (this.Session != null && this.Session.Count > 0)
        {
            Log.Logger("Use session");

            string email = (string)this.Session["Email"];
            int practiceId = (int)this.Session["PracticeId"];
            int practitionerId = (int)this.Session["PractitionerId"];

            this.ClientScript.RegisterHiddenField("loggedInUserName", email);
            this.ClientScript.RegisterHiddenField("practiceId", practiceId.ToString());
            this.ClientScript.RegisterHiddenField("practitionerId", practitionerId.ToString());
        }
        else
        {
            Log.Logger("Abandon Session");
            this.Session.Abandon();
            Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
            Response.Redirect("~/Default.aspx");  
        }

        base.OnInit(e);
    }

什么可能导致我的会话如此迅速地丢失,为什么在现场托管时只是一个问题而不是本地主机的问题?

是什么导致应用程序结束,因为我没有记录应用程序错误?

4

0 回答 0