I have problems with the Delphi XE2 application. Sometimes WinInet calls ASMX blocks and never returns - the user must terminate the process from the task manager to close the application. A service created using the WSDLImp tool is used to connect to the ASMX service application.
During its operation, the application makes many calls to the web service (~ 1000-2000). And at some point (last time it was a request element 782, the first time it was close to the end) the application freezes. After some digging, registration, I found that application blocks on
WinInetResult := HttpSendRequest(Request, nil, 0, DatStr.Bytes, DatStr.Size);
In the Soap.SOAPHTTPTrans block
Suppose this is some kind of problem on the server side - the server freezes when processing the request. But on the trial request servers, requests from other clients were processed, while the target was blocked. And, when you use Fiddler to debug http traffic from the application, everything works as expected, no locks. In addition, WinInets SendTimeout, ReceiveTimeout, ConnectTimeout has no effect - there are no timeout errors. Another point: the application is blocked not by a special method call, but by different ones.
After searching on Google, I found that HttpSendRequest can block the maximum concurrent connections. But the application does not have parallel execution - each action is performed in the main thread of the graphical user interface.
, Indy HTTP WinInet. Indy , . - Indy.
. , WinInet. . - , HttpSendRequest ?
P.S.
, Indy . , , ?