C#MVC IIS长时间运行请求

C#MVC IIS长时间运行请求,c#,asp.net-mvc-4,iis,C#,Asp.net Mvc 4,Iis,我有一个C#MVC应用程序。我知道其中一个电话需要12个小时,我正在生成一些报告 我想知道IIS是否会让进程运行这么长时间。 如果我异步运行,它会不会运行,并以某种方式将其放在一边,让他运行这么长时间?一般来说,这是一种非常糟糕的做法。您的应用程序池可能会因为许多超出您控制范围的原因而被回收。 如果在外部进程中处理此问题,然后通过IIS向用户提供结果,您将受益匪浅 但是,在启动.net 4.5.2()时,您可以使用HostingEnvironment.QueueBackgroundWorkIte

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

我想知道IIS是否会让进程运行这么长时间。
如果我异步运行,它会不会运行,并以某种方式将其放在一边,让他运行这么长时间?

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

但是,在启动.net 4.5.2()时,您可以使用
HostingEnvironment.QueueBackgroundWorkItem
API。
这背后的想法是,如果应用程序池正常关闭,IIS将尝试完成这项工作。

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

但是,在启动.net 4.5.2()时,您可以使用
HostingEnvironment.QueueBackgroundWorkItem
API。
这背后的想法是,如果应用程序池正常关闭,IIS将尝试完成这项工作。

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

我想报告一定使用了类似SSRS的东西。为什么不在后端创建一个批处理作业,以便在指定的时间运行报告呢。用报表的状态更新表,只需在前端轮询状态即可。准备好了就下载吧。想象一下,如果你的报告已经运行了6个小时,并且依赖于网站的启动。如果有人重新启动网站,则处理时间已过去6个小时。

因此,只要应用程序池正在运行,它就会运行?是的。但是你需要明白,如果用户将该按钮混合,那么你可能会很快得到100%的cpu使用率,只要应用程序池正在运行,它就会运行?是的。但是,您需要了解,如果用户将该按钮混合,那么您可能会很快得到100%的cpu使用率。请查看Hangfire()。这正是你想要的。看看Hangfire()。这正是你想要的。是的,那是我的第二次。我想我会同意的。是的,那是我的第二次。我想我会同意的。