4

设想:

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

问题:

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

1 回答 1

3

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

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

于 2011-05-20T17:51:15.603 回答