我处于一些奇怪的境地。我制作了DataSnap REST服务器和客户端。所有REST服务器的方法都是由客户端通过TRESTClient调用的。我的REST服务器是Apache模块。我还使用了TSQLConnection& TDSClientCallbackChannelManager用于cleint中的Peer-to-Peer回调。我设置TDSServer ChannelResponseTimeout = 0和TDSHTTPWebDispatcher SessionTimeout = 0.仍然我的客户端在几秒钟后超时。我设置TDSClientCallbackChannelManager CommunicationTimeout = 0和ConnectionTimeout = 0。我在System.Net.HttpClient.Win的TWinHTTPClient.DoExecuteRequest方法中得到的错误。奇怪的是在调试模式下我得到了AV但是在exe模式下我没有收到任何AV但是我的回调没有工作,虽然REST方法正在执行。我还尝试将TDSServerClass的LifeCyle设置为Session&调用,都给出了超时。下面是DSClientCallback&的一些代码。设为TSQLConnection:
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