取消ASP.NET回调处理

时间:2011-06-20 05:42:15

标签: asp.net callback

我正在使用基于此的代码加载gridview:

http://msdn.microsoft.com/en-us/library/ms366515%28v=VS.80%29.aspx

我正在使用回调来填充网格,有时会有很多数据或者用户想要取消。

当用户点击取消时,如何取消在服务器上处理的回调?

感谢

3 个答案:

答案 0 :(得分:3)

进行了广泛搜索,发现可以Cancel Server Tasks with ASP.NET & AJAX

虽然我对AJAX并不擅长,但找到一些可以帮到你的链接,

以下是Canceling Server Tasks with ASP.NET & AJAX以及forum thread与您的问题类似的问题。

希望它有所帮助!

答案 1 :(得分:2)

AFAIK,一旦启动就无法取消服务器端回叫处理。最多,您可以使用一些忽略回调结果的客户端(浏览器)端逻辑。

无论如何,我建议您使用ASP.NET AJAX(UpdatePanelScript Services)而不是ICallbackEventHandler。它使用起来非常简单,而且更加灵活。此外,您还可以选择取消回调:请参阅this article取消更新面板回调(请注意,取消实际上意味着停止等待(并忽略)回调结果,服务器端处理将会发生)。

答案 2 :(得分:1)

一旦您向服务器发起了请求,客户端就无法取消它。忽略任何可能的“可取消方法”周围的机制,您已经开始向服务器发出请求。任何进一步的通信都将产生新的请求,因此原始请求将一直持续到完成为止。记住HTTP是一种无状态协议,每个请求都不知道任何先前的请求,因此,它如何取消先前的请求?

你最好的选择是忽略服务器响应,如果你真的需要取消可能仍然在服务器上处理的长时间运行的任务,你需要烘焙支持自己,因为Web服务器本身不会支持它。为此,您可能需要某种方式在多个http请求之间保持任务状态,并让原始请求(运行该任务的请求)监视某种取消标记。

请记住,在上面的场景中,您不会取消请求,而是请求正在运行的任务。