ASP.NET代码执行在IIS上停止一段时间后停止

时间:2017-03-20 07:11:03

标签: c# asp.net iis

我的应用程序运行时间很长,大约需要4/5小时才能完成。该任务通过迭代循环从CUBE数据服务器检索数百种组合的数据。

当我从本地Visual Studio 2015运行它时工作正常但是当我在应用服务器上部署它时,此过程会在25/30分钟后自动停止。当我从CUBE服务器监控时,我可以看到在25/30分钟之后没有数据呼叫接收到那里。

我曾在web.config中尝试过以下操作,并将会话超时设置为距离IIS 20小时但没有任何作用,因为数据调用在一段时间后暂停并且没有完全完成。

  

executionTimeout = “86400”

代码如下 -

  

Task.Factory.StartNew(()=> RunManufacturerModuleCache(),   TaskCreationOptions.LongRunning);

RunManufacturerModuleCache()方法的for循环为1000次迭代,每次迭代都从CUBE服务器获取数据。

是否有任何设置可以延长IIS中我缺少的执行时间,或者无法在IIS中运行超过25/30分钟的执行过程?谢谢!

1 个答案:

答案 0 :(得分:1)

IIS具有应用程序池空闲超时(默认为20分钟)。只需转到IIS中的应用程序池,右键单击您的应用程序池和"高级设置"。您将看到一个名为"空闲超时(分钟)"的设置。如果您不希望您的应用池在长时间内未收到任何请求时自动关闭,请将其设置为0.

或者,您可以每隔几分钟向应用程序主页(或任何简单页面)发送请求,以使应用程序池保持清醒状态。

聚苯乙烯。 就最佳实践而言,您不应将长时间运行的任务放在请求处理管道中。相反,您应该创建一个单独的服务(Windows服务,Azure WebJob等...)来执行长时间运行的任务,但这是一个单独的讨论。