Javascript 如何在ASP.NET中取消搜索过程

Javascript 如何在ASP.NET中取消搜索过程,javascript,asp.net,wcf,Javascript,Asp.net,Wcf,我目前正在从事一个ASP.Net项目。我有一个搜索按钮,按下后,连接到WCF,然后检索数据。我想添加一个“取消”按钮,我想在按下“取消”按钮时取消搜索过程。问题是我不能中断回发,所以无论我做什么,我不能停止在这个过程中的塞拉赫。我试图通过调用以下命令从javascript刷新页面:location.reload(true)。但它不起作用。它将等待回发完成,然后重新加载页面。我还尝试在按下“取消”后中止WCF连接,但结果相同。有人能帮我吗?好的,我们终于找到了答案。首先,我们发现,如果回发已经完成

我目前正在从事一个ASP.Net项目。我有一个搜索按钮,按下后,连接到WCF,然后检索数据。我想添加一个“取消”按钮,我想在按下“取消”按钮时取消搜索过程。问题是我不能中断回发,所以无论我做什么,我不能停止在这个过程中的塞拉赫。我试图通过调用以下命令从javascript刷新页面:
location.reload(true)。但它不起作用。它将等待回发完成,然后重新加载页面。我还尝试在按下“取消”后中止WCF连接,但结果相同。有人能帮我吗?

好的,我们终于找到了答案。首先,我们发现,如果回发已经完成,我们将无法阻止它。我们可以取消搜索的唯一时间窗口是从WCF服务获取数据的时间(请注意,客户端请求数据,然后将请求转发到WCF服务,然后WCF服务从数据库获取数据)。一旦请求从WCF服务返回,就没有任何方法(据我们所知)可以取消搜索过程。 我们还尝试在每次请求数据时创建新的线程/任务。问题是,当创建新线程/任务时,与客户端的连接丢失,因为我们无法更新组件(如gridview)。 正如在评论中所建议的,我们试图通过调用AJAX来实现数据检索过程。AJAX调用的问题是我们必须使用带有
[WebMethod]
标记的静态方法,这使得我们无法使用非静态成员。 最后,解决办法是: 1-我们将数据请求函数移到客户端(javascript) 2-我们使用了
.asmx
服务。这使得从javascript调用非静态函数成为可能 这给了我们一个时间窗口,我们可以用它来取消serach过程,从用户按下Search开始,直到WCF服务返回数据。
最后,您可以转到查看如何使用
.asmx
服务。

使用Ajax调用以加载数据。这将使主浏览器线程随时可以取消它。tnx需要您的帮助。我试试看it@ChrisLively我试着照你说的做。问题是如果我使用ajax,我将不得不调用带有´[WebMethod]´标记的静态方法。这样我就无法访问非静态的页面组件。听起来您有三个选项。1.要有一个长时间运行的进程来锁定浏览器。2.修复导致流程耗时过长的问题。3.重新构建解决方案,使您没有这些依赖关系。@请参阅您的评论。我们采用了方案3。通过使用.asmx服务,我们为用户提供了一个时间窗口,用户可以取消该过程。我们发现,如果进行回发,除了关闭浏览器外,没有其他方法可以中断回发。我应该为她的问题发表答案吗?再次感谢你的帮助。