为什么我在idHTTPServer中的ServeFile上引发异常?

时间:2019-01-13 07:47:53

标签: delphi indy

尝试从idHTTPServer下载文件。从浏览器中我可以找到localhost:7777 / files / 2019/1/7 / 1.php并最后下载文件。

但是当我以调试模式关闭服务器时,出现以下错误

EidClosedSocket,显示消息“已断开连接”

我该如何解决?

procedure TRPFiles.Download;
var
  filepath: string;
begin
  filepath := ExtractFileDir(Application.ExeName) + StringReplace(RequestInfo.URI, '/', '\', [rfReplaceAll]);
  if TFile.Exists(filepath) then
  begin
    ResponseInfo.SmartServeFile(Context, RequestInfo, filepath);
    FResponses.OK();
  end;
end;

1 个答案:

答案 0 :(得分:0)

没有什么要修复的。这是完全正常的行为。当您关闭服务器时,它会关闭所有仍打开的客户端套接字,从而导致这些套接字上的所有后续I / O操作失败。您仅在调试器中运行是因为看到异常。只需忽略它,然后让应用正常处理即可。服务器将在内部处理异常,因此它可以关闭管理已关闭的客户端套接字的线程。在调试器外部运行应用程序时,您不会看到异常。