【问题标题】:what will happen after browser closing浏览器关闭后会发生什么
【发布时间】:2014-08-24 05:49:56
【问题描述】:

我们知道,当我们关闭浏览器时,会话会被销毁。

请帮我解决以下问题。

假设我点击了注册页面上的提交按钮,在内部它被称为 SQL 存储过程,这需要更多时间来执行..

如果我同时关闭浏览会发生什么?

  1. 我的 sql 连接是否仍然可用?如果是,那么在关闭浏览器后我的存储过程仍然处于执行模式?

  2. 会话究竟什么时候被销毁?

想了解更多关于这个生命周期的信息,谢谢

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    首先要记住这一点。

    1. 会话在用户浏览器上通过 cookie 连接
    2. 会话超时。

    如果这两个中的任何一个消失了,会话就消失了,所以让我们分析一下。

    Cookie

    如果 cookie 是 session cookie(临时),则在用户关闭浏览器时消失,如果不是临时的,则在过期时消失,或者当然如果用户清除它,或者如果用户是在私人模式下甚至没有保存。

    所以当与会话相关联的 cookie 消失时,您将丢失会话

    即使浏览器由于其他原因无法读取会话 cookie,会话也可能丢失。

    服务器上的会话数据

    与 cookie 连接的会话是存在于服务器上的数据字典。 会话有超时,所以如果用户在这段时间内没有更新对服务器的调用,服务器会杀死服务器上的会话数据。

    另外,请注意,会话可以在 SQL Server 上提供,也可以在后台运行并将数据保存在内存中的服务中提供。

    如果您将会话数据保存在内存中,那么它们甚至可能在会话超时之前丢失,原因可能是 IIS 回收,也可能是服务本身出于它们的原因将其清除。

    服务器端超时

    如果您调用了一个长时间的函数,并且用户结束了他们的连接,那么该过程将继续运行,直到任一端的任一端超时。如果您的进程需要 10 分钟才能执行,这不是很安全,您可能会超时并且永远不会正确结束,即使用户仍处于连接状态。如果你说话几秒钟,那么它就可以了,即使用户关闭了他的浏览器,程序也会执行。

    查看页面超时时间和sql server端超时时间。如果您在用户连接良好的情况下结束,您将结束同样的操作,并且如果用户在中间关闭他们的连接。

    请记住,在繁重的多用户通话情况下,您可能会遇到会话锁定问题,请阅读此 q/a ASP.NET Server does not process pages asynchronously

    所以请注意这个过程不要超过几秒钟。

    遗言

    在一段时间内不丢失会话的最“安全方法”是使用良好设置的 cookie,这不是临时的,并且可以保存几个月(谷歌将 cookie 保存两年),并使用 SQL Server保存您的会话数据。

    更多详情请阅读:
    ASP.NET State Management Recommendations
    Session would not retain values and always return null
    Keeping a related ASP.NET application's session alive from another ASP.NET application
    ASP.NET Session State Overview

    【讨论】:

    • 感谢您的评论,我同意不花太多时间执行 sp 总是安全的。我刚刚问过你详情。好的,简而言之,答案是“是”,对吗?
    猜你喜欢
    • 2010-09-19
    • 1970-01-01
    • 2015-03-25
    • 2011-01-06
    • 2012-02-12
    • 2013-05-09
    • 2016-12-13
    • 1970-01-01
    • 2017-11-28
    相关资源
    最近更新 更多