【问题标题】:C# MVC IIS long running requestsC# MVC IIS 长时间运行的请求
【发布时间】:2017-07-06 06:50:17
【问题描述】:

我有一个 C# MVC 应用程序。我知道其中一个电话需要大约 12 小时,我正在生成一些报告。

我想知道 IIS 是否会保持进程运行这么长时间。 如果我异步执行它,它会运行并以某种方式将其收起来并让他运行这么长时间吗?

【问题讨论】:

  • 看看 Hangfire (hangfire.io)。这正是您想要的。

标签: c# asp.net-mvc-4 iis


【解决方案1】:

一般来说,这是一种非常糟糕的做法。您的应用程序池可能由于您无法控制的许多原因而被回收。 在外部进程中处理此问题,然后通过 IIS 向用户提供结果,您将受益匪浅。

但是,从 .net 4.5.2 (https://blogs.msdn.microsoft.com/dotnet/2014/05/05/announcing-the-net-framework-4-5-2/) 开始,您可以使用 HostingEnvironment.QueueBackgroundWorkItem API。 这背后的想法是 IIS 将尝试在应用程序池正常关闭的情况下完成这项工作。

【讨论】:

  • 所以只要应用程序池在运行它就会运行?
  • 是的。但您需要了解,如果用户按下该按钮,那么您可能会很快达到 100% 的 CPU 使用率
【解决方案2】:

我假设报告必须使用 SSRS 之类的东西。为什么不在后端创建批处理作业以在指定时间运行报告。用报告的状态更新一个表格,然后在前端轮询状态。准备好时只需下载它。想象一下,如果您的报告已经运行了 6 个小时并且它依赖于正在运行的网站。如果有人重新启动网站,那么 6 小时的处理时间就过去了。

【讨论】:

  • 是的,那是我的第二个。我想我会同意的。
猜你喜欢
  • 2014-07-26
  • 2011-01-12
  • 2012-02-16
  • 2011-01-23
  • 1970-01-01
  • 2015-01-04
  • 1970-01-01
  • 2011-04-19
  • 2017-10-05
相关资源
最近更新 更多