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



>场景:

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

问题:

  • IIS 7.5 如何处理该线程,当客户端/用户中止并终止连接时,该线程仍在执行?
  • 即使客户端已断开连接,服务器端线程是否会完成处理,或者 IIS 7.5 是否会在某个时候杀死该线程,可能会在中止的进程中留下一团糟?
  • 这是否取决于时间 - 取决于服务器端进程完成所需的时间?
  • 是否可以控制此操作 - 即使客户端已中止,我是否可以指示 IIS 完成该过程?如果是这样,如何?

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

您应该考虑使用Indy的TIdHTTPServer,然后您将控制服务器端,这将允许您设置自己的规则来处理长时间且可能断开连接的客户端会话,而不是成为IIS AppPool管理方面的专家。

最新更新