【发布时间】:2014-11-14 15:14:39
【问题描述】:
我有一个运行良好的 WebAPI。我们根据数据库中的数据在服务器上生成 PDF,有时,这些数据非常大并且需要一段时间。一段时间 = 大概 30 秒。
有没有办法在生成 PDF 和 PDF 完成时向用户返回启动屏幕,然后在它已经返回“正在加载...”屏幕后将流重新注入到 HTTPResponseMessage?
【问题讨论】:
-
听起来您将前端职责与后端职责混为一谈。您的前端在等待请求完成时应该显示一个启动屏幕;这不是 Web API 的责任。
-
问题是前端将用户引导到一个页面,而该页面是显示pdf的位置。即myhost/api/makeapdf{id} - pdf 是根据该信息生成的。那是前端。
-
您必须将 WebAPI 修改为异步,并更新数据库中的令牌标志以启动 PDF 创建过程,同时客户端应用程序读取数据库令牌标志,并显示“正在加载.. ",并且还在持续等待来自 WebAPI 的响应(因为它是异步的),当最终由 WebAPI 完成处理时,然后将最终响应发送给客户端,现在客户端应用程序显示最终的 pdf。
标签: c# asp.net asynchronous