0

我的程序做了一个很长的回发,我在屏幕上放了一些消息说它正在“工作”。现在我想用 AJAX 并行查询以更新该状态(例如“20% 完成......”)。

然而事实证明,在回发期间,没有执行对任何 webmethod 的并行调用,这些调用被延迟了。因此,Javascript 会进行这些调用(不那么定期),但在整个 PostBack 结束之前它们没有收到回复(这使得更新进度状态的整个尝试无法使用)。

有没有办法对 IIS / ASP.NET 应用程序进行并行查询?

我使用 ASP.NET 4.0 和 Visual Studio 2010 以及开发服务器组件

提前致谢!

4

3 回答 3

1

您可以查看使用 SignalR 进行此类操作。查看http://www.signalr.net了解更多信息。

这将允许您开始一个漫长的过程,然后将此操作的进度发送回客户端。

Scott Hanselman 在他的博客上提供了一个如何做这类事情的工作示例。见这里http://www.hanselman.com/blog/SolvingTheShakespeareMillionMonkeysProblemInRealtimeWithParallelismAndSignalR.aspx

请注意,尽管他的博客文章使用的是旧版本的 SignalR,因此代码需要更改一些 API 才能使用最新版本。

于 2013-01-25T09:27:05.957 回答
0

我也很感兴趣,并找到了下一个解释:

回发过程中不能进行AJAX调用,这是因为回发过程中页面在客户端被破坏,包括AJAX调用的回调函数,控制权转到服务器获取客户端的新内容,当控制返回客户端一切都在那里重建,我假设这是在进行 AJAX 调用的时候。

于 2013-01-25T09:23:24.637 回答
0

另一种选择是使用 AJAX 调用而不是回发来启动该过程。因此,第一次调用将在服务器上的另一个线程上启动进程。以下调用只会使用处理线程的某种共享变量检查进度。该过程完成后,您可以根据需要进行回发以刷新页面上的数据。

于 2013-01-25T10:29:17.187 回答