asp.net webforms中的异步事件

asp.net webforms中的异步事件,asp.net,jscript,Asp.net,Jscript,我有以下用例: 用户可以在我的asp.net web项目中筛选某些数据,并以PDF格式请求结果。PDF根据新请求生成并返回给用户。我已经准备好了一切 但是:处理过程可能需要两分钟,用户应该能够继续使用该页面 我尝试使用第二个选项卡,但两个选项卡都被阻止。即使使用PageAsyncTask类和async属性。当我使用线程来执行请求时,我确实是并行的,但我不知道在工作完成时如何从线程内部与用户交互 如何向服务器发送异步请求,并在完成后以任何形式在页面上获取结果?Dave Encosia很好地解释了如

我有以下用例: 用户可以在我的asp.net web项目中筛选某些数据,并以PDF格式请求结果。PDF根据新请求生成并返回给用户。我已经准备好了一切

但是:处理过程可能需要两分钟,用户应该能够继续使用该页面

我尝试使用第二个选项卡,但两个选项卡都被阻止。即使使用PageAsyncTask类和async属性。当我使用线程来执行请求时,我确实是并行的,但我不知道在工作完成时如何从线程内部与用户交互


如何向服务器发送异步请求,并在完成后以任何形式在页面上获取结果?

Dave Encosia很好地解释了如何做到这一点:


    • 戴夫·安科西亚(Dave Encosia)在解释如何做到这一点方面做得很好:


      这是一个单页应用程序。我这样问是因为有什么东西可以阻止用户导航到另一个页面,而不知道PDF将不再提供?在不了解你的应用程序的情况下,我想你可能想看看SignalR。它促进了实时通信(在可能的情况下,它将对旧浏览器进行轮询)。你可以在你的服务器上设置一个事件,表明PDF已经准备好,并提醒客户端它已经准备好下载。我喜欢这个概念。但是我如何进行异步调用呢?当我使用后台工作程序时,我的页面会变慢。BackgroundWorker类主要用于Windows窗体。与web异步意味着您的浏览器打开一个页面,然后通过AJAX在后台与web服务通信。这是一个单页应用程序吗。我这样问是因为有什么东西可以阻止用户导航到另一个页面,而不知道PDF将不再提供?在不了解你的应用程序的情况下,我想你可能想看看SignalR。它促进了实时通信(在可能的情况下,它将对旧浏览器进行轮询)。你可以在你的服务器上设置一个事件,表明PDF已经准备好,并提醒客户端它已经准备好下载。我喜欢这个概念。但是我如何进行异步调用呢?当我使用后台工作程序时,我的页面会变慢。BackgroundWorker类主要用于Windows窗体。与web异步意味着您的浏览器打开一个页面,但随后通过AJAX在后台与web服务进行通信。Dave提出的概念正是我所需要的。我写了一个测试项目,效果很好。当我将其集成到实际项目中时,页面会被卡住,直到web服务调用完成。你能给我一个提示吗?@StafanG-太棒了。很高兴这些链接帮助了你。当我开始了解它时,他们帮助了我。关于你的问题,我倾向于解决的是注释掉所有的东西,除了异步调用需要做什么,然后开始添加东西,直到它中断。对于任何面临同样问题的人。这是我的最终解决方案:我使用了Dave Encosia的想法,必须将所有异步请求页面设置为
      EnableSessionState=“ReadOnly”
      Dave呈现的概念正是我所需要的。我写了一个测试项目,效果很好。当我将其集成到实际项目中时,页面会被卡住,直到web服务调用完成。你能给我一个提示吗?@StafanG-太棒了。很高兴这些链接帮助了你。当我开始了解它时,他们帮助了我。关于你的问题,我倾向于解决的是注释掉所有的东西,除了异步调用需要做什么,然后开始添加东西,直到它中断。对于任何面临同样问题的人。这是我的最终解决方案:我使用了Dave Encosia的想法,必须将所有异步请求页面设置为
      EnableSessionState=“ReadOnly”