我处于某种奇怪的境地。我制作了 DataSnap REST 服务器和客户端。所有 REST 服务器的方法都由客户端通过 TRESTClient 调用。我的 REST 服务器是 Apache 模块。我还在客户端中使用 TSQLConnection 和 TDSClientCallbackChannelManager 进行点对点回调。我设置了 TDSServer ChannelResponseTimeout = 0 和 TDSHTTPWebDispatcher SessionTimeout = 0。几秒钟后我的客户端仍然超时。我设置了 TDSClientCallbackChannelManager CommunicationTimeout=0 和 ConnectionTimeout=0。我在 System.Net.HttpClient.Win 的 TWinHTTPClient.DoExecuteRequest 方法中遇到的错误。奇怪的是在调试模式下我得到了 AV,但在 exe 模式下我没有收到任何 AV,但我的回调都没有工作,尽管 REST 方法正在执行。我还尝试将 TDSServerClass 的 LifeCyle 设置为 Session & Invocation,两者都超时。
SQLConnection.Params.Values['HostName'] := SERVERIP;
SQLConnection.Params.Values['Port'] := SERVER_PORT.ToString;
SQLConnection.Params.Values['ConnectionTimeout'] := '0';
SQLConnection.Connected := True;
ClientCallbackManager.CommunicationTimeout := '0';
ClientCallbackManager.ConnectionTimeout := '0';
ClientCallbackManager.DSHostname := SERVERIP;
ClientCallbackManager.DSPort := SERVER_PORT.ToString;
fClientCallbackId := TDSTunnelSession.GenerateSessionId;
ClientCallbackManager.DSPath := 'mypath';
ClientCallbackManager.ManagerId := TDSTunnelSession.GenerateSessionId;
fClientId := ClientCallbackManager.ManagerId;
ClientCallbackManager.RegisterCallback(fClientCallbackId,
'mychannel', TServerCallback.Create);
我做错了什么或错过了什么?请帮忙。我也将此发布到 Embarcadero Datasnap 论坛,没有任何回应https://forums.embarcadero.com/thread.jspa?threadID=229678&tstart=0