C# ASP.NET:can';在执行(长时间)回发时,不要执行对同一程序的AJAX调用
我的程序进行了一次长时间的回发,我在屏幕上显示了一些信息,它正在“工作”。现在我想用AJAX并行查询以更新该状态(例如,“20%完成…”) 然而,事实证明,在回发过程中,不会执行对任何webmethods的并行调用,这些调用会被延迟。因此Javascript进行了这些调用(不经常),但在整个回发结束之前,它们不会收到回复(这使得更新进度状态的整个尝试无法使用) 有没有办法使对IIS/ASP.NET应用程序的并行查询正常工作 我使用ASP.NET 4.0和Visual studio 2010以及开发服务器组件C# ASP.NET:can';在执行(长时间)回发时,不要执行对同一程序的AJAX调用,c#,asp.net,iis,C#,Asp.net,Iis,我的程序进行了一次长时间的回发,我在屏幕上显示了一些信息,它正在“工作”。现在我想用AJAX并行查询以更新该状态(例如,“20%完成…”) 然而,事实证明,在回发过程中,不会执行对任何webmethods的并行调用,这些调用会被延迟。因此Javascript进行了这些调用(不经常),但在整个回发结束之前,它们不会收到回复(这使得更新进度状态的整个尝试无法使用) 有没有办法使对IIS/ASP.NET应用程序的并行查询正常工作 我使用ASP.NET 4.0和Visual studio 2010以及开
提前谢谢 我也很感兴趣,找到了下一个解释: 您不能在回发期间进行AJAX调用,这是因为在 回发页面在客户端中被销毁,包括回调 函数的AJAX调用,控件转到服务器获取 当控件返回到客户端时,客户端的新内容 一切都在那里重建,我想这是 正在进行AJAX调用
您可以考虑在这种操作中使用信号器。查看更多信息 这将允许您启动一个长流程,然后将此操作的进度发送回客户端 Scott Hanselman在他的博客上提供了一个如何做这类事情的工作示例。看这里
请注意,他的博客文章使用的是旧版本的SignalR,因此代码需要一些API更改才能使用最新版本。另一种选择是使用AJAX调用而不是回发来启动流程。 因此,第一个调用将在服务器上的另一个线程上启动进程。下面的调用将只检查处理线程中某种共享变量的进度。该过程完成后,如果需要,可以进行回发以刷新页面上的数据