C# 关闭浏览器时运行sql查询
当用户关闭浏览器时,如何运行sql查询 在asp.net c#中C# 关闭浏览器时运行sql查询,c#,javascript,asp.net,C#,Javascript,Asp.net,当用户关闭浏览器时,如何运行sql查询 在asp.net c#中 谢谢。这就像要求某人在万一死亡时一定给你打电话一样。不行。网络不是这样工作的。你能做的最好的事情就是定期与他们保持联系,如果他们没有登记入住,你就认为他们已经死了。这就像要求某人确保在他们死后给你打电话一样。不行。网络不是这样工作的。你所能做的最好的事情就是定期与他们保持联系,如果他们没有报到,就认为他们已经死了。你所能做的最好的事情就是捕捉有人离开你的页面的事件。 浏览器转到新页面或关闭浏览器将触发此操作 然后可以调用特定的ur
谢谢。这就像要求某人在万一死亡时一定给你打电话一样。不行。网络不是这样工作的。你能做的最好的事情就是定期与他们保持联系,如果他们没有登记入住,你就认为他们已经死了。这就像要求某人确保在他们死后给你打电话一样。不行。网络不是这样工作的。你所能做的最好的事情就是定期与他们保持联系,如果他们没有报到,就认为他们已经死了。你所能做的最好的事情就是捕捉有人离开你的页面的事件。 浏览器转到新页面或关闭浏览器将触发此操作 然后可以调用特定的url,您可以在其中注册服务器上的事件。我不确定所有的浏览器都会接受这个事件,如果需要很长时间,浏览器也有继续运行的风险 另一个可能效果更好的选项是,javascript代码每隔一段时间“ping”一次服务器,以确认用户仍在页面上,如果ping间隔过后没有收到ping,则可以推断用户已离开页面 更多信息也可在此处找到:
如果要开发此功能,我将每隔10-30秒ping一次服务器,并使用“用户联机的最新日期”值更新用户表。您可以尽最大努力捕获某人离开页面的事件。 浏览器转到新页面或关闭浏览器将触发此操作 然后可以调用特定的url,您可以在其中注册服务器上的事件。我不确定所有的浏览器都会接受这个事件,如果需要很长时间,浏览器也有继续运行的风险 另一个可能效果更好的选项是,javascript代码每隔一段时间“ping”一次服务器,以确认用户仍在页面上,如果ping间隔过后没有收到ping,则可以推断用户已离开页面 更多信息也可在此处找到:
如果要开发此功能,我会每隔10-30秒ping一次服务器,并使用“用户联机的最新日期”值更新用户表。为了安全起见,您应该将其放在global.asax中,但这不会在浏览器关闭时直接调用,但您可以确定它会被调用。当会话超时或会话被放弃时,将首先调用它
protected void Session_End(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand("check_if_closed", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@user_id", txtUname.Text);
con.Open();
cmd.ExecuteNonQuery();
}
要设置会话超时,请将其放在web.config的标记下。请注意,超时时间以分钟为单位
<sessionState mode="InProc" cookieless="true" timeout="1"/>
更多信息:为了安全起见,您应该将其放在global.asax中,但这不会在浏览器关闭时直接调用,但您可以确保它会被调用。当会话超时或会话被放弃时,将首先调用它
protected void Session_End(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand("check_if_closed", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@user_id", txtUname.Text);
con.Open();
cmd.ExecuteNonQuery();
}
要设置会话超时,请将其放在web.config的标记下。请注意,超时时间以分钟为单位
<sessionState mode="InProc" cookieless="true" timeout="1"/>
更多信息:所以我尝试了一些你们写的想法 但是我通过检查用户cookie是否存在来解决这个问题 每隔几分钟检查一次 无论如何,谢谢你。
希望我能给别人一些想法。所以我尝试了一些你们写的想法 但是我通过检查用户cookie是否存在来解决这个问题 每隔几分钟检查一次 无论如何,谢谢你。
希望我能给其他人一些想法。查看以获取想法。将代码放在global.asax的会话结束事件中如何?查看以获取想法。将代码放在global.asax的会话结束事件中如何?在卸载之前总是有
的,它不是100%安全的,可以工作,但您可以使用它。这就像在手机上放置一个程序,检查他是否从用户手中掉下来给你发信息。并假设当手机死时会掉下来。@Aristos:事实上,更像是手机出于任何原因离开了用户的手。同样的beforeunloca
也会工作,因为当用户离开页面并转到其他页面时会触发。当然,总是有beforeunload
不能100%安全地工作,但是你可以用它。这就像在手机上放置一个程序,检查他是否从用户手中掉下来给你发信息。并且假设当它死了,手机会掉下来。@Aristos:实际上,更像是手机因为任何原因离开了用户的手。同样的方法是在用户离开页面,转到其他页面时触发。除非您通过设置数据创建了会话,否则会话\u End不会启动。您还必须通过在application\u End
中调用代码来处理应用程序池重新启动、超时或关闭的情况。您可以在application\u End事件中处理该情况。=)除非您通过设置数据创建了会话,否则会话\u End不会启动。您还必须通过在application\u End
中调用代码来处理应用程序池重新启动、超时或关闭的情况。您可以在application\u End事件中处理该情况。=)