1

我一直在使用使用数据快照的客户端服务器应用程序......在服务器重新启动之前,一切都完美无缺。一旦服务器重新启动,客户端也必须重新启动。如果不重新启动客户端,客户端无法与服务器通信,因为烦人的问题“会话已过期”。谁面临同样的问题?如何求解?谢谢

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

重现问题的步骤:

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

2 回答 2

2

好的,看来我找到了解决方案。

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

于 2019-11-22T14:37:43.857 回答
0
TDSRestConnection.PreserveSessionID=False

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

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

TDSRestConnection.SessionID := '';

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

于 2020-07-30T04:33:24.937 回答