首页 > 解决方案 > Asp .Net Core Controller 任务超时

问题描述

我有一个导入数据的 ASP .NET Core 3.1 网站。在导入之前,我想对导入进行一些验证。因此,用户选择要导入的文件,单击“验证”,然后获得一些验证错误消息以便他们可以修复导入文件,或者允许他们导入。

我遇到的问题是这些验证和导入过程所花费的时间长度。如果文件很小,一切都会按预期工作。如果文件较大(超过 1000 个)记录验证和/或可能需要几分钟。在我的本地机器或网络上的服务器上,这工作正常。在我实际面向公众的网站上,我得到:

503 first byte timeout

所以,我需要一些策略来解决这个问题。调高超时时间好像是个兔子洞?看起来 BackgroundService/IHostedService 可能是最好的方法?但我似乎无法找到如何以我想要的方式执行此操作的示例:

  1. 通过 AJAX 调用“验证”
  2. 开启装载机
  3. 执行验证
  4. 关闭装载机
  5. 向用户显示成功或错误列表

##更新## -

验证 -

  1. 对控制器的 Ajax 调用
  2. 控制器调用业务逻辑代码

一个。检查文件扩展名

湾。检查文件大小

C。使用 CsvHelper 读取 .csv

d。检查所有必需的列是否存在

C。检查所需列是否包含有效数据 - 长度、无空格、有效邮政编码、有效电话等...

d。检查内部重复

e. 如果追加(而不是覆盖)检查数据库中的重复项 - 这是缓慢的步骤

那么,加快验证过程是否有更好的解决方案?BackgroundService 是否矫枉过正?

标签: asp.net-corebackground-service

解决方案


推荐阅读