1

所以我想在用户关闭浏览器时删除一些文件。

我正在使用page_unload如下所示的方法:

   protected override void OnUnload(EventArgs e)
    {
        base.OnUnload(e);
        string[] uploadedFiles = Directory.GetFiles(Server.MapPath("~/testPdfIn"));
        foreach (string uploaded in uploadedFiles)
        {
            File.Delete(uploaded);
        }
    }

但是该page_unload方法将在页面加载后立即触发,删除文件夹中的文件,用户甚至无需关闭浏览器。

有没有办法page_unload在加载后立即停止触发并且仅在用户关闭浏览器时触发?

4

4 回答 4

1

这就是它应该如何工作,如果你想在页面卸载中做某事。使用window.onbeforeunload

于 2012-05-09T17:37:51.557 回答
1

Page.Unload不工作你认为它是如何工作的。 在生命周期Page.Unload结束时触发,而不是在浏览器关闭时触发:Page

在页面完全呈现、发送到客户端并准备好被丢弃后,将引发 Unload 事件。此时,响应和请求等页面属性被卸载并执行清理。

代码隐藏方法是服务器端的,而关闭浏览器是客户端事件。

于 2012-05-09T17:40:09.443 回答
1

最好检测浏览器关闭事件,而不是使用 ajax 调用服务器端函数将为您做

<script type="text/javascript">
$(function () {
    $(window).unload(function () {

   jQuery.ajax({ url: "http://localhost:49591/filedelete.aspx", async: false });
      });
});
</script>
于 2012-05-09T17:43:32.370 回答
0

Page_Unload与浏览器关闭无关。一旦所有页面元素/页面完全加载,就会发生卸载事件。

您应该考虑将文件删除代码放入session_endglobal.asax 文件中

于 2012-05-09T17:38:27.393 回答