【问题标题】:Azure web app restarting on BackgroundService在 BackgroundService 上重新启动 Azure Web 应用
【发布时间】:2023-12-27 03:24:01
【问题描述】:

我需要能够从在 azure 上运行的 Web 应用创建 Excel 报告。最初报告是立即创建的,但这需要很长时间,因此生成被卸载到后台工作人员,该工作人员创建报告并向用户发送带有下载链接的邮件。

这可行,但对于小文件,但当报告大小达到约 15MB(相当于 excel 中约 100k 行)时,应用服务会简单地重新启动,而不会在应用程序日志中出现任何错误。

唯一的入口是

[Information] Microsoft.Hosting.Lifetime: Application is shutting down...

在我的本地机器上使用数据库副本运行相同的代码。

应用程序在 S1 中运行,对于正常流程来说足够快。任何建议

【问题讨论】:

  • 那是一个很大的旧文件。过去我能够解决此问题的唯一方法是将其放入独立的控制台应用程序中 - 似乎微软会在运行时间过长时将其杀死,除非它是基于控制台的。
  • 如果我没记错的话,后台服务中未捕获的异常会使应用程序崩溃。您可以尝试捕获异常并记录它以查看导致异常的原因。
  • 当你的后台worker生成这么大的excel文件时,它消耗了多少内存,可能是S1实例类型内存不足,或者超过了一个阈值,所以Az运行时回收那个worker。

标签: c# azure asp.net-core


【解决方案1】:

在您的应用程序的 web.config 中验证文件的长度 (maxRequestLength)。

在 web.config --> 标签中添加如下代码,

 <httpRuntime targetFramework="*.*.*" maxRequestLength="1073741824" >

标签-->添加安全标签,

<security>
   <requestFiltering>
       <requestLimits maxAllowedContentLength="2147483648" />
   </requestFiltering>
</security>

请参考 SOthread 了解更多信息。

【讨论】:

  • @Nils - 如果答案对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢
最近更新 更多