Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
控制长时间运行的关键ISAPI流程 脚本: 客户端通过POST向IIS 7.5服务器发出ISAPI调用-该调用将生成任务关键型输出,以分发给众多用户。(在本例中,使用Delphi XE和Indy 9 HTTP客户端) ISAPI过程需要很长时间才能完成(它在客户端线程化) 在POST调用返回之前,用户中止或客户端机器停机,终止客户端连接,并将ISAPI进程留在IIS 7.5服务器上 问题: IIS 7.5如何处理该线程,当客户端/用户中止并终止连接时,该线程仍在执行 即使客户端已断开连接,服务器端线程是否会完成处理,或者IIS 7.5是否会在某个时候终止该线程,可能会在中止的进程中留下混乱 这是否取决于时间-取决于服务器端进程完成所需的时间 这是否可以控制?即使客户端已中止,我是否可以指示IIS完成此过程?如果是,怎么做_Delphi_Iis 7.5_Isapi_Indy 9 - Fatal编程技术网

控制长时间运行的关键ISAPI流程 脚本: 客户端通过POST向IIS 7.5服务器发出ISAPI调用-该调用将生成任务关键型输出,以分发给众多用户。(在本例中,使用Delphi XE和Indy 9 HTTP客户端) ISAPI过程需要很长时间才能完成(它在客户端线程化) 在POST调用返回之前,用户中止或客户端机器停机,终止客户端连接,并将ISAPI进程留在IIS 7.5服务器上 问题: IIS 7.5如何处理该线程,当客户端/用户中止并终止连接时,该线程仍在执行 即使客户端已断开连接,服务器端线程是否会完成处理,或者IIS 7.5是否会在某个时候终止该线程,可能会在中止的进程中留下混乱 这是否取决于时间-取决于服务器端进程完成所需的时间 这是否可以控制?即使客户端已中止,我是否可以指示IIS完成此过程?如果是,怎么做

控制长时间运行的关键ISAPI流程 脚本: 客户端通过POST向IIS 7.5服务器发出ISAPI调用-该调用将生成任务关键型输出,以分发给众多用户。(在本例中,使用Delphi XE和Indy 9 HTTP客户端) ISAPI过程需要很长时间才能完成(它在客户端线程化) 在POST调用返回之前,用户中止或客户端机器停机,终止客户端连接,并将ISAPI进程留在IIS 7.5服务器上 问题: IIS 7.5如何处理该线程,当客户端/用户中止并终止连接时,该线程仍在执行 即使客户端已断开连接,服务器端线程是否会完成处理,或者IIS 7.5是否会在某个时候终止该线程,可能会在中止的进程中留下混乱 这是否取决于时间-取决于服务器端进程完成所需的时间 这是否可以控制?即使客户端已中止,我是否可以指示IIS完成此过程?如果是,怎么做,delphi,iis-7.5,isapi,indy-9,Delphi,Iis 7.5,Isapi,Indy 9,IIS将继续处理,直到完成,或者直到达到应用程序池的超时 您应该考虑使用Indy的TIdHTTPServer,然后控制服务器端,这将允许您设置自己的规则,以处理长时间且可能断开连接的客户端会话,而不是成为IIS应用池管理专家。IIS将通知活动筛选器:。我不确定,但在我看来,您需要编写一个ISAPI过滤器来处理这些事件(中止处理)。我知道这并不能真正回答您的问题,但将这种处理放在ISAPI过程中是一个糟糕的体系结构决策。如果你有很多事情要做,我建议异步调用另一个进程来“完成工作”。只是想澄清一下,

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


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

IIS将通知活动筛选器:。我不确定,但在我看来,您需要编写一个ISAPI过滤器来处理这些事件(中止处理)。我知道这并不能真正回答您的问题,但将这种处理放在ISAPI过程中是一个糟糕的体系结构决策。如果你有很多事情要做,我建议异步调用另一个进程来“完成工作”。只是想澄清一下,我的理解是,默认情况下,进程将继续完成,即使客户端已断开连接。我可能完全错了,不过…@Steve-“异步调用另一个进程”-我在考虑类似的事情-可能是一种方法。如果这个问题出现,我也有一个相当简单的解决方法来协商——但我想知道这个问题是否有一个好的、简单的答案。Tnx.@Mikey当然可以,但我们说的是一个可扩展服务器,服务器必须将控制权传递给扩展。在这种情况下,您可能会尝试通知扩展客户机连接已死亡的事实(以允许它执行一些清理)。从MSDN上的文档中,我只找到了上述传递给ISAPI过滤器的
SF\u NOTIFY\u END\u OF_NET\u SESSION
通知。但我对此不确定。我希望我的评论不会误导你。“直到应用程序池超时”:你指的是什么超时?唯一可用的超时是“空闲超时”(idle timeout)——仅当工作进程确实空闲时才适用——不处理请求——在我的情况下不适用。你是说应用程序池回收?我认为,如果一个工作进程仍在工作,回收就不会起作用。回收是一种内置的、有计划的维护活动,它不应该关闭一个正在运行的进程。