asp.net-core - Asp .Net Core Controller 任务超时
问题描述
我有一个导入数据的 ASP .NET Core 3.1 网站。在导入之前,我想对导入进行一些验证。因此,用户选择要导入的文件,单击“验证”,然后获得一些验证错误消息以便他们可以修复导入文件,或者允许他们导入。
我遇到的问题是这些验证和导入过程所花费的时间长度。如果文件很小,一切都会按预期工作。如果文件较大(超过 1000 个)记录验证和/或可能需要几分钟。在我的本地机器或网络上的服务器上,这工作正常。在我实际面向公众的网站上,我得到:
503 first byte timeout
所以,我需要一些策略来解决这个问题。调高超时时间好像是个兔子洞?看起来 BackgroundService/IHostedService 可能是最好的方法?但我似乎无法找到如何以我想要的方式执行此操作的示例:
- 通过 AJAX 调用“验证”
- 开启装载机
- 执行验证
- 关闭装载机
- 向用户显示成功或错误列表
##更新## -
验证 -
- 对控制器的 Ajax 调用
- 控制器调用业务逻辑代码
一个。检查文件扩展名
湾。检查文件大小
C。使用 CsvHelper 读取 .csv
d。检查所有必需的列是否存在
C。检查所需列是否包含有效数据 - 长度、无空格、有效邮政编码、有效电话等...
d。检查内部重复
e. 如果追加(而不是覆盖)检查数据库中的重复项 - 这是缓慢的步骤
那么,加快验证过程是否有更好的解决方案?BackgroundService 是否矫枉过正?
解决方案
推荐阅读
- elasticsearch - 在 Elasticsearch 嵌套 aggs 脚本中访问父字段的正确方法
- amazon-web-services - elastic beanstalk eb create 如何指定现有的负载均衡器
- python - 如何为 TestCase 设置一次“return_value”。Python。姜戈
- java - 如何知道日期范围是否与 Java 中的另一个日期范围相交 - Groovy
- regex - 用于谷歌分析目标的带有多个查询字符串的正则表达式 url
- python - 值在 for 循环内自动更新
- javascript - 拆分艺术家 - 标题 JavaScript
- objective-c - UIButton addTarget 崩溃
- django - 使用 max() 选择最近的活动时间
- highcharts - Highcharts - 不同宽度图表的同步十字准线