首页 文章

当用户关闭浏览器时,Asp.net释放打开的文件

提问于
浏览
0

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

这是我在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"函数 .

  • 或者稍后如何访问"unclosed" Session变量以释放它们 .

2 回答

  • 0

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

    最好打开文件,完成所需的工作并立即关闭它而不保持打开状态 . 下次您必须再次访问它时,打开,完成工作并关闭 .

  • 0

    遗憾的是,当用户关闭浏览器时,无法触发Session_OnEnd;只是因为ASP.NET没有意识到这已经发生了,并且依赖于会话超时(它将在一段时间后执行,默认为20分钟后) .

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

    javascript detect browser close tab/close browser

    希望有所帮助

相关问题