Datasnap会话已过期

我一直在使用客户端服务器应用程序,并且使用了datasnap ...一切正常,直到重新启动服务器。服务器重新启动后,客户端也必须重新启动。如果不重新启动客户端,则由于令人讨厌的问题“会话已过期”,客户端将无法与服务器通信。谁面临同样的问题?如何求解?谢谢

我创建了示例项目来阐明我的意思。下载link

重现此问题的步骤:

  1. 打开ProjectGroup1.groupproj
  2. 编译并运行rest项目。是服务器
  3. 编译并运行客户端项目。
  4. 单击其余项目上的开始按钮
  5. 在客户端项目上单击button1。它将调用其余的EchoString方法
  6. 在其余项目上单击“停止”按钮
  7. 单击其余项目上的开始按钮
  8. 在客户端项目上单击button1。您必须遇到“会话已过期”问题
bin452032116 回答:Datasnap会话已过期

好吧,看来我找到了解决方法。

在客户端只需设置TDSRestConnection.PreserveSessionID = False。我想每个请求都有一个新的会话ID,因此它永远不会过期...

,
TDSRestConnection.PreserveSessionID=False

这是每次创建新会话的一种简便方法,但会给服务器带来不必要的压力。

发生会话超时时,最好使用以下代码初始化会话并再次请求。

TDSRestConnection.SessionID := '';

像这样处理客户端并适当调整服务器的会话超时时间可以使服务器更有效。

本文链接:https://www.f2er.com/3052654.html

大家都在问