Asp.net core 在Aspnet Core 2.1 Azure应用程序服务中长时间运行导出到excel作业
我有一个angular 4应用程序,服务器端有AspNetCore 2.1 Web Api(用于restful服务)。应用程序托管在Azure应用程序服务中。 应用程序具有以excel格式导出数据的功能。excel中的行数应超过10万行。Azure应用程序服务的超时限制为3.8分钟。如果请求超过3.8分钟,Azure load balancer将取消请求,用户通常会收到错误。 为了解决这个问题,我决定将此任务移动到后台进程,并将使用SingalR向用户提供更新,直到任务完成。应用程序的流程如下所示Asp.net core 在Aspnet Core 2.1 Azure应用程序服务中长时间运行导出到excel作业,asp.net-core,signalr,azure-functions,asp.net-core-webapi,azure-app-service-envrmnt,Asp.net Core,Signalr,Azure Functions,Asp.net Core Webapi,Azure App Service Envrmnt,我有一个angular 4应用程序,服务器端有AspNetCore 2.1 Web Api(用于restful服务)。应用程序托管在Azure应用程序服务中。 应用程序具有以excel格式导出数据的功能。excel中的行数应超过10万行。Azure应用程序服务的超时限制为3.8分钟。如果请求超过3.8分钟,Azure load balancer将取消请求,用户通常会收到错误。 为了解决这个问题,我决定将此任务移动到后台进程,并将使用SingalR向用户提供更新,直到任务完成。应用程序的流程如下所
始终打开
正如您所指出的:信号器用于实时消息,而不是上传文件。所以您可以使用这种方法将文件上传到客户端。通常在这种情况下,我们为客户提供近实时的解决方案。 您可以采取哪些措施来解决此问题: 1) 单击按钮以导出用户数据(包含100K行或更多行的excel文件) 2) 通知用户,用户导出请求已提交 3) 还添加了一个刷新按钮功能,该功能将获取文件导出的状态 4) 在后台有一个web作业,它将处理您的文件并将处理后的文件上载到azure存储中,可能是在blob中 5) blob文件可用后,将状态更新为“已完成” 6) 提供一个启用链接的选项来下载文件,该文件将是blob的端点url 这样,主线程就不会被锁定,屏幕也会有响应 如果您不想使用“刷新”按钮功能来继续检查报告,可以利用signalR保持连接活动,并设置一个定时选项来继续检查blob文件。一旦文件在blob中可用,只需更新标签即可 希望能有帮助