【问题标题】:Asynchronous event in asp.net webformsasp.net webforms中的异步事件
【发布时间】:2013-10-18 15:21:05
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这是一个单页应用程序吗?我问是因为有什么东西可以阻止用户导航到另一个页面而没有意识到 PDF 将不再被传递?
  • 在不了解您的应用的情况下,我想您可能想看看 SignalR。它促进了实时通信(在可能的情况下......它将诉诸对旧浏览器的轮询)。您可以在服务器上设置一个事件,指示 PDF 已准备就绪,并提醒客户端它已准备好下载。
  • 我喜欢这个概念。但是我怎样才能进行异步调用呢?当我使用后台工作者时,我的页面变慢了。
  • BackgroundWorker 类主要用于 Windows 窗体。与 Web 同步意味着您的浏览器会打开一个页面,然后通过 AJAX 在后台与 Web 服务进行通信。

标签: asp.net jscript


【解决方案1】:

【讨论】:

  • Dave 提出的概念正是我所需要的。我写了一个测试项目,效果很好。当我将它集成到我的实际项目中时,页面会卡住,直到 Web 服务调用完成。有没有机会给我一个提示?
  • @StafanG - 太棒了。很高兴这些链接对您有所帮助。当我第一次开始学习它时,他们帮助了我。关于您的问题,我倾向于解决的问题是将所有内容注释掉,但执行异步调用所需的内容除外,然后开始重新添加内容直到它中断。
  • 对于任何面临同样问题的人。这是我的最终解决方案:我使用了 Dave Encosia 的想法,必须将所有异步请求页面设置为 EnableSessionState="ReadOnly"
猜你喜欢
  • 2014-07-16
  • 1970-01-01
  • 2019-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
  • 1970-01-01
相关资源
最近更新 更多