我们知道,当我们关闭浏览器时,会话会被破坏。
请帮我解决以下问题。
假设我已点击我的注册页面上的提交按钮,并在内部调用SQL存储过程,这需要更多时间来执行..
同时如果我关闭浏览将会发生什么?
我的sql连接是否仍然可用?如果是,那么在关闭浏览器之后,我的商店程序仍处于执行模式吗?
什么时候会话被破坏?
想了解更多有关此生命周期的信息,谢谢
答案 0 :(得分:2)
首先考虑到这一点。
如果这两个中的任何一个消失了,那么会话就会消失,所以让我们分析一下吧。
如果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