gpt4 book ai didi

delphi - Windows 更新后 Active 设置为 False 时 TIdHttpServer 卡住

转载 作者:行者123 更新时间:2023-12-01 17:32:31 25 4
gpt4 key购买 nike

我们有一个 Indy(版本 10.6.1.5235)TIdHttpServer“服务”,多年来一直与 Delphi 2007 配合良好。在最新的 Windows 更新(KB4338815 和 KB4338830)之后,我们注意到当 TIdHttpServer 设置为 false 时,服务会卡住。

我已经包含了创建 TIdHttpServer 的源代码。在我们的服务“Stop”处理程序中,我们将 IdHttpServer1.Active 设置为 False,这就是它卡住的地方。当 Indy 尝试关闭 http 连接时,它似乎挂起。有解决办法吗?

更新一个 根据 Remy Lebeau,我创建了一个最小、完整且可验证的示例。这是:

procedure TMainForm.Button1Click(Sender: TObject);
begin
memo1.clear;
iCall := 0;
IdHTTPServer1 := TIdHTTPServer.Create;
IdHTTPServer1.MaxConnections := 10;
IdHTTPServer1.AutoStartSession := True;
IdHTTPServer1.SessionState := True;
IdHTTPServer1.OnCommandGet := IdHTTPServer1CommandGet;
IdHTTPServer1.KeepAlive := False;
idHttpServer1.DefaultPort := 80;
if ReuseSocket.checked then
IDHTTPSERVER1.ReuseSocket := rsTrue;
IdHTTPServer1.Active := True;
end;


procedure TMainForm.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
iCall := iCall + 1;
if iCall mod 100 = 0 then
memo1.lines.add(inttostr(iCall)+ ' calls made');
AResponseInfo.ContentText := '<html><body>Hello There</body></html';
end;

procedure TMainForm.StopClick(Sender: TObject);
begin
try
IdHTTPServer1.Active := False;
memo1.lines.add('IdHTTPServer1.Active := False;');
except
on e: exception do
memo1.lines.add('Exception on IdHTTPServer1.Active := False; Message:'+e.message);
end;

end;

应用程序将正常运行,但一旦您单击“停止”按钮,将 IdHttpServer Active 属性设置为 False,它就会挂起。

最佳答案

您可能遇到过类似的问题:

Windows 2012 R2 closesocket() hangs on listening socket

The issue was brought by patch from Microsoft KB4338815, which caused closesocket tо hang forever on Intel Xeon processors

该问题已通过卸载您已安装的 KB4338815 得到解决。因此,请尝试卸载系统上的该知识库,看看是否可以解决您的问题。

关于delphi - Windows 更新后 Active 设置为 False 时 TIdHttpServer 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51362457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com