繁体   English   中英

数据快照 session 已过期

[英]Datasnap session has expired

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

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

重现问题的步骤:

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

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

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

TDSRestConnection.PreserveSessionID=False

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

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

TDSRestConnection.SessionID := '';

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM