【问题标题】:Asp.net free the opened file when user close the browser当用户关闭浏览器时,Asp.net 释放打开的文件
【发布时间】:2013-11-20 03:57:26
【问题描述】:

我正在 ASP.net 上打开一个文件进行编辑,直到会话结束,因为各种原因。 当用户从会话中注销时,我关闭打开的文件(来自 Session 变量),以便其他用户可以访问它。只要用户手动注销或会话时间到期,它就可以正常工作。 问题是,当用户在没有“退出”链接的情况下关闭浏览器时,不会从 Global.asax 文件中调用 Session_End 函数。 可能还有其他情况,如网络断开、浏览器崩溃、系统关闭等。

这是我在 Global.asax 文件中的代码

  Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
        ' Code that runs when a session ends. 
        ' Note: The Session_End event is raised only when the sessionstate mode
        ' is set to InProc in the Web.config file. If session mode is set to StateServer 
        ' or SQLServer, the event is not raised.
       ' Code the close the File which is being stored in Session
     End Sub

我正在寻找这些解决方案中的任何一个

  • 如何在用户关闭浏览器时调用“Session_End”函数。
  • 或者以后如何访问“未关闭的”会话变量以释放它们。

【问题讨论】:

    标签: asp.net vb.net session


    【解决方案1】:

    当您使用 Web 服务(或任何其他非托管资源)上的文件时,最好不要让它们保持打开状态。您无法处理问题中提到的某些断开连接。

    最好打开文件,做你需要的工作,然后立即关闭它,不要让它保持打开状态。下次您必须再次访问它时,打开、执行并关闭。

    【讨论】:

    • 在我的场景中,如果一个用户正在处理某些内容,我需要锁定它,并在其他用户注销或关闭浏览器后启用。
    【解决方案2】:

    很遗憾,当用户关闭浏览器时,无法触发 Session_OnEnd;仅仅是因为 ASP.NET 不知道这已经发生,并且依赖于会话超时(它会在一段时间后执行,默认为 20 分钟后)。

    我认为在您的场景中,您可能希望使用 JavaScript 来提醒/防止用户关闭当前窗口。试试这个(来自另一个 StackOverflow 答案):-

    javascript detect browser close tab/close browser

    希望有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 2014-05-14
      • 2019-04-28
      • 1970-01-01
      • 2020-01-23
      相关资源
      最近更新 更多