我有一个C#MVC应用程序。我知道其中一个电话需要12个小时,我正在制作一些报告。
我想知道IIS是否会使进程保持这么长时间。 如果我将它async它会运行并以某种方式把它放走并让他跑这么久?
答案 0 :(得分:2)
一般来说,这是一种非常糟糕的做法。您的应用程序池可能会因您控制之外的多种原因而被回收。 通过在外部进程中处理它,然后通过IIS向用户提供结果,您将获益匪浅。
但是,启动.net 4.5.2(https://blogs.msdn.microsoft.com/dotnet/2014/05/05/announcing-the-net-framework-4-5-2/)即可使用printf("%u\r\n", (uint32_t)*i_ptr);
API。
这背后的想法是,IIS将尝试在正常关闭应用程序池的情况下完成此工作。
答案 1 :(得分:1)
我假设报告必须使用类似SSRS的内容。为什么不在后端创建批处理作业以在指定时间运行报告。使用报告的状态更新表,并仅轮询前端的状态。什么时候准备下载它。想象一下,如果您的报告已经运行了6个小时,并且它依赖于网站正在运行。如果有人重新启动了6个小时处理的网站。