REST文件下载需要5分钟才能完成

时间:2019-07-12 04:45:18

标签: rest asp.net-web-api2

从Angular客户端对Web API 2服务器的一个API调用通过大量SQL查询和处理动态生成XLSX文件。最多可能需要五分钟才能生成所有数据,并通过文件下载将其返回给客户端。显然这很糟糕,因为即使页面仍在加载中,Chrome到那时仍显示错误。

感觉就像在这里,我将使用状态代码202告诉客户端它收到了请求,但是在此之后我不确定如何将文件实际发送回客户端。

我唯一能想到的是,服务器在创建文件后会生成一个后台任务,该任务会将文件写入特定的临时位置,然后另一个API调用将下载该文件(如果存在)并将其从其中删除临时位置。

是我要做的,然后让客户端定期轮询该文件吗?不能预生成文件,因为它必须具有实时数据(当然是在请求时)。

1 个答案:

答案 0 :(得分:0)

  

感觉就像是在这里我要使用状态代码202告诉客户端它收到了请求,但是我不确定之后如何将文件实际发送回客户端。

通常,HTTP 202附带一个位置标头和一个指示资源何时何地可用的指示符。 还有一种可能性是向状态监视器添加链接,如here所述。

要实现此目的,您可以为该进程生成一个ID,并将其用于位置标题url中以指向结果。

客户端应该准备就绪后,客户端便可以获取该资源。这意味着您需要一些短期的持久性。