好的,
在这里,我有一个 MVC 4 应用程序,我正在尝试在其中创建一个异步 ActionResult。
Objective : 用户在网页上有一个下载PDF Icon,下载需要很多时间。因此,当服务器忙于生成 PDF 时,用户应该能够在网页中执行一些操作。
(单击“下载 PDF”链接正在向服务器发送 ajax 请求,服务器正在获取一些数据并正在推回 PDF)
发生的事情是,当我调用 ajax 下载 PDF 时,它会启动该过程,但会阻止每个请求,直到并且除非它返回到浏览器。那是简单的阻塞请求。
到目前为止我所尝试的。
1) 使用 AsyncController 作为控制器的基类。
2) 将 ActionResult 制作为异步任务 DownloadPDF(),在这里我将整个代码/逻辑包装到一个包装器中以生成 PDF。这个包装器最终是 DownloadPDF() 中的一个可等待的东西
像这样的东西。
public async Task<ActionResult> DownloadPDF()
{
string filepath = await CreatePDF();
//create a file stream and return it as ActionResult
}
private async Task<string> CreatePDF()
{
// creates the PDF and returns the path as a string
return filePath;
}
是的,操作是基于会话的。
我在哪里遗漏了一些东西吗?