控制长时间运行且关键的ISAPI进程

时间:2011-05-20 15:12:08

标签: delphi iis-7.5 isapi indy-9

情景:

  • 客户端使用POST对IIS 7.5服务器进行ISAPI调用 - 该调用将生成关键任务输出以分发给众多用户。 (在这种情况下使用带有Indy 9 HTTP客户端的Delphi XE);
  • ISAPI流程需要很长时间才能完成(它在客户端进行了线程化);
  • 在POST调用返回之前,用户中止或客户端计算机关闭,终止客户端连接并使ISAPI进程在IIS 7.5服务器上消失。

问题:

  • IIS 7.5对该线程做了什么,当客户端/用户中止并终止连接时,该线程仍在执行?
  • 即使客户端已断开连接,服务器端线程是否会完成处理,或者IIS 7.5会在某个时刻终止该线程,这可能会在中止的进程中造成混乱?
  • 这是时间依赖 - 取决于服务器端进程完成所需的时间吗?
  • 是否可以控制 - 即使客户端已中止,我是否可以指示IIS完成此过程?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:3)

IIS将继续处理直到完成,或者直到应用程序池超时为止。

你应该看看使用Indy的TIdHTTPServer,然后你将控制服务器端,这将允许你设置自己的规则来处理一个长而可能断开的客户端会话,而不是成为IIS AppPool管理的专家。 / p>