当我运行代码时,线程过程在response.write之前!!为什么以及如何让他们按顺序?为什么线程在response.write之前出现
insertUser.ExecuteNonQuery()
con.Close()
Response.Write("Done successfully ...")
Thread.Sleep(4000)
Response.Redirect("Default.aspx")
当我运行代码时,线程过程在response.write之前!!为什么以及如何让他们按顺序?为什么线程在response.write之前出现
insertUser.ExecuteNonQuery()
con.Close()
Response.Write("Done successfully ...")
Thread.Sleep(4000)
Response.Redirect("Default.aspx")
您可以使用客户端功能在你的代码 普莱舍做到这一点请参考以下链接后,才的WebRequest的完整处理
Web响应将得到在页面上,即你可以请在代码完成后查看响应。因此您的代码正在排除正确的顺序。您可以通过插入Response.End()方法来进行测试,如下所示:
insertUser.ExecuteNonQuery()
con.Close()
Response.Write("Done successfully ...")
Response.End();
Thread.Sleep(4000)
Response.Redirect("Default.aspx")
响应是Web应用程序中的一次性事物。你不能“回应一点,做一些其他的事情,然后回应一些。”当您考虑类似Response.Redirect()
这些修改响应的标头时尤其如此。 (。从本质上讲,Response.Redirect()
将完全“揍”你已经添加到响应,使用户将再也看不到它的任何内容)
它看起来像你想在这里做的是:
有几个标准的方法来实现这一点。您可以使用包含步骤1的页面进行响应,在客户端代码中执行步骤2和3,或者可以在服务器端代码中执行步骤3,在第二页执行步骤1(可能还有两个隐藏几秒钟后的消息)。
例如,假设你想显示在网页A的消息,等待几秒钟,然后发送用户页面B.然后在第一个,你可能包括这样的事情:
<script type="text/javascript">
$(function() {
$('#dialog-message').dialog({
modal: true,
buttons: {
Ok: function() {
$(this).dialog('close');
}
},
close: function() {
window.location.href='Default.aspx';
}
});
});
</script>
<div id="dialog-message">Done successfully ...</div>
使用jQuery,它所做的就是向用户显示一个对话框(使用jQuery UI Dialog)和预期的消息,当用户关闭对话框时,它会执行重定向。
页面完全执行后会有响应。和asp.net网站作为无状态协议工作 –
你究竟想在这里完成什么?这不会写入页面,等待4秒钟,然后重定向。 HTTP响应不起作用。如果您试图向用户显示消息和新页面,则应该在客户端代码中执行等待/重定向或在第二页上显示消息。 – David
您对客户端/服务器如何在架构上进行交互有一些深刻的误解。在将任何内容发送回客户端浏览器之前,您的代码正在IIS服务器上执行。 – asawyer