私は奇妙な状況にあります。DataSnap REST サーバーとクライアントを作成しました。すべての REST サーバーのメソッドは、TRESTClient を介してクライアントによって呼び出されます。私の REST サーバーは Apache モジュールです。また、cleint のピアツーピア コールバックに 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