C# ASP.NET异步调用出现问题,正在等待处理程序返回
我正试图为我的开发人员遇到的问题找到答案。我自己也不太清楚这件事 我们正在使用ASP.NET和C 当用户按下页面上的按钮时,我们调用hander将会话变量保存到表单的当前视图状态,其中包含一些使用的ID 然后,我们调用具有其他功能的灰盒窗口 因为这是异步的,所以greybox不会等待处理程序响应 在许多情况下,在会话变量保存到视图状态之前加载灰盒,在这种情况下,灰盒没有必要的ID 在本地主机上,速度足够快,我们从未意识到这个问题。在生产中,这是一个问题C# ASP.NET异步调用出现问题,正在等待处理程序返回,c#,asp.net,asp.net-ajax,C#,Asp.net,Asp.net Ajax,我正试图为我的开发人员遇到的问题找到答案。我自己也不太清楚这件事 我们正在使用ASP.NET和C 当用户按下页面上的按钮时,我们调用hander将会话变量保存到表单的当前视图状态,其中包含一些使用的ID 然后,我们调用具有其他功能的灰盒窗口 因为这是异步的,所以greybox不会等待处理程序响应 在许多情况下,在会话变量保存到视图状态之前加载灰盒,在这种情况下,灰盒没有必要的ID 在本地主机上,速度足够快,我们从未意识到这个问题。在生产中,这是一个问题 正确的解决方案是什么?对服务器进行异步调用
正确的解决方案是什么?对服务器进行异步调用以保存会话将向客户端返回响应。在服务器成功回复之前,不要启动greybox。如果只有一种情况导致表单上出现异步回发,则可以通过执行以下操作插入回复:
<script type="text/javascript">
//<![CDATA[
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(endRequest);
function endRequest(sender, e) {
// Do stuff
}
//]]>
</script>
有关更复杂的场景,请参阅有关此主题的。对服务器进行异步调用以保存会话将向客户端返回响应。在服务器成功回复之前,不要启动greybox。如果只有一种情况导致表单上出现异步回发,则可以通过执行以下操作插入回复:
<script type="text/javascript">
//<![CDATA[
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(endRequest);
function endRequest(sender, e) {
// Do stuff
}
//]]>
</script>
有关更复杂的场景,请参阅关于此主题的。您需要确保在AJAX请求的回调方法中运行其他代码 如果手动调用web服务或page方法,Sys.Net.webservicecoproxy.invoke方法将接受回调:
我觉得David建议的PageRequestManager只有在使用UpdatePanel执行AJAX请求时才起作用。您需要确保在AJAX请求的回调方法中运行其他代码 如果手动调用web服务或page方法,Sys.Net.webservicecoproxy.invoke方法将接受回调: 我觉得David建议的PageRequestManager只有在使用UpdatePanel执行AJAX请求时才起作用