簡體   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