3

我正在使用基于 Indy 的 HTTP 服务器构建的 Web 服务器,我发现如果我在浏览器中单击一个请求,然后在第一个请求完成处理之前单击另一个请求,可能会导致各种问题. 但我找不到任何方法来确定我是否处于取消请求中。每个请求都发生在自己的线程中,因此将线程设置为 Terminated 将是一个很好的检查方法,但这似乎没有发生。

有什么方法可以让 Indy 通知我它当前正在处理的请求已被发送它的浏览器取消,并且它现在正试图加载不同的东西?

4

1 回答 1

5

Web 浏览器可以取消正在进行的 HTTP 请求的唯一方法是关闭其与服务器的连接。发生这种情况时,TIdHTTPServer 将在下次尝试访问断开连接的套接字时引发异常。只需让异常传入 TIdHTTPServer 进行默认处理,这样它就可以终止调用线程并清理套接字。这是正常行为。

于 2012-05-26T22:03:59.693 回答