Asp.net mvc 3 mvc3检测网站(应用程序)正在关闭
我正在用mvc3构建一个网站,我只需要在应用程序关闭时删除数据库中的数据。(用户单击红色的x) 我尝试使用onbeforeunload事件使用javascript,但每次我进入应用程序中的新页面时都会发生此事件Asp.net mvc 3 mvc3检测网站(应用程序)正在关闭,asp.net-mvc-3,window,Asp.net Mvc 3,Window,我正在用mvc3构建一个网站,我只需要在应用程序关闭时删除数据库中的数据。(用户单击红色的x) 我尝试使用onbeforeunload事件使用javascript,但每次我进入应用程序中的新页面时都会发生此事件 是否可以检测用户何时关闭窗口 早上好,您可以尝试在Session\u End方法中将逻辑添加到global.asax文件中,以删除数据库中的记录。这是不可能的。但是,您可以做的是使用一个小的javascript块,它将每n分钟/秒进行一次ajax调用,告诉服务器用户仍然打开了浏览器 通过
是否可以检测用户何时关闭窗口 早上好,您可以尝试在Session\u End方法中将逻辑添加到global.asax文件中,以删除数据库中的记录。这是不可能的。但是,您可以做的是使用一个小的javascript块,它将每n分钟/秒进行一次ajax调用,告诉服务器用户仍然打开了浏览器 通过这种方式,您可以设置一个超时,表示如果5分钟后我们没有收到用户的消息,我们可以删除数据库中的数据(或者您需要执行的任何操作) 要实现超时逻辑,有两个选项:
在window.unload事件中使用同步ajax请求 当用户转到其他页面、关闭或刷新时,将触发此事件。您可以调用web应用程序上的服务,通知它用户不再编辑文档 在快速搜索之后,我看到了这个片段
这是可以做到的,但我不知道怎么做(不是JS专家)。然而,我以前在网页上见过这种行为。但是,请确保应用程序逻辑不依赖于行为。如果浏览器崩溃或者用户在会话超时后才离开会发生什么?好吧,我想我还需要做一些工作,因为在我的网站上,两个用户可以看到同一个文档,第一个用户可以编辑它,但第二个用户只能阅读该文档。因此,我在数据库中添加了文档的id,当第二个用户打开文档时,我检查它是否在数据库中(表示它正在使用)。因此,当第一个用户退出网站时,我需要删除数据库中的引用,以便其他用户也可以编辑它:我已尝试将我的逻辑放入global.asax Application_End()中,但在我关闭应用程序时没有发生任何事情,但会话_End正在工作请注意,虽然会话在用户关闭浏览器时没有结束,但在达到会话超时时会结束。这可能会起作用,但你必须将其更改为仅在浏览器关闭时检测,而不是在他们转到其他页面或刷新时检测,因为OP说他不希望这样。是的,我只需要在窗口关闭时检测,而不是在我转到其他页面时检测。谢谢,这将帮助我摆脱困境^^
$(window).unload(function() {
$.ajax({
url: 'resetTheDocument?id=whatever',
async: false,
cache: false,
type: "POST",
data: "My work here is done"
});
});