所以我想在用户关闭浏览器时删除一些文件。
我正在使用下面显示的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
在加载后立即触发,只在用户关闭浏览器时触发?
答案 0 :(得分:1)
这是它应该如何工作,如果你想在页面卸载中做一些事情。使用 window.onbeforeunload
答案 1 :(得分:1)
最好检测一下浏览器关闭事件,然后使用ajax调用服务器端函数将为你做什么
<script type="text/javascript">
$(function () {
$(window).unload(function () {
jQuery.ajax({ url: "http://localhost:49591/filedelete.aspx", async: false });
});
});
</script>
答案 2 :(得分:0)
Page_Unload
与浏览器关闭无关。一旦完全加载了所有页面元素/页面,就会发生卸载事件。
您应该考虑将文件删除代码放在global.asax文件中的session_end
答案 3 :(得分:0)
Page.Unload
无法正常工作。
在Page.Unload
life-cycle结束时触发了Page
,而不是在浏览器关闭时:
完全呈现页面后引发Unload事件, 发送给客户端,准备丢弃。此时,页面 卸载响应和请求等属性并进行清理 进行。
代码隐藏方法是服务器端,而关闭的浏览器是客户端事件。