我有一个在IIS系统上运行的进程,它需要几个小时才能完成,所以它在一个线程上运行。
问题是这个线程在一段时间后被丢弃,因为IIS进程超时(没有活动)。这个线程不能中途停止。
如果线程正在运行,如何防止此超时?
在IIS中的应用程序池设置中,您可以将其配置为在一段时间不活动后不回收AppDomain。但是请注意,在IIS中使用长时间运行的任务不是一个好主意,而且这个设置可能不是100%可靠。例如,如果您的服务器开始运行低内存或高CPU使用率IIS仍然可以回收它。IIRC这个阈值也可以配置。
最好的方法是将这些长时间运行的任务外部化为一个单独的Windows服务。
如果你不能做前面的任何一件事,你绝对绝望了,你可以尝试的最后一件事是通过定期发送HTTP请求来从这个后台线程自动ping web应用程序,以避免它死亡。但是再一次,这应该是你最不应该尝试的。