我正在使用基于以下内容的代码加载一个网格视图:
http://msdn.microsoft.com/en-us/library/ms366515%28v=VS.80%29.aspx
我使用回调来填充网格,有时会有很多数据或者用户想要取消。
当用户点击取消时,如何在服务器上取消正在处理的回调??
谢谢
发布于 2011-06-20 14:32:47
AFAIK,启动后不能取消服务器端回调处理。至多可以有一些忽略回调结果的客户端(浏览器)端逻辑。
无论如何,我建议您使用ASP.NET AJAX (UpdatePanel
或Script Services
)而不是ICallbackEventHandler
。它使用起来非常简单,而且更加灵活。此外,您还可以选择取消回调:请参阅取消更新面板回调的this article (请注意,cancel实际上意味着停止等待(&忽略)回调结果,服务器端处理将发生)。
发布于 2011-06-20 14:53:52
进行了相当广泛的搜索,发现Cancel Server Tasks with ASP.NET & AJAX
是可能的
虽然我不擅长AJAX,但我找到了一些对你有帮助的链接,
下面是如何使用Canceling Server Tasks with ASP.NET & AJAX,下面是一个forum thread,介绍与您的问题类似的内容。
希望它能帮上忙!
发布于 2011-06-20 15:03:12
一旦你向服务器发起了一个请求,客户端就无法取消它。忽略任何可能的"cancellable方法“的机制,你已经向服务器发起了一个请求。任何进一步的通信都将导致新的请求,因此原始请求将继续,直到它完成。请记住,HTTP是一种无状态协议,每个请求都不知道任何先前的请求,因此,它如何取消先前的请求?
你最好的办法就是忽略服务器的响应,或如果你真的需要取消一个长时间运行的任务,这些任务可能还在服务器上处理,你需要自己提供支持,因为web服务器本身并不支持它。要做到这一点,您可能需要某种方法来跨多个http请求保持任务状态,并让原始请求(运行该任务的那个请求)监视某种取消标志。
不过请记住,在上面的场景中,您不会取消请求,而是取消请求正在运行的任务。
https://stackoverflow.com/questions/6407227
复制相似问题