6

Delphi REST DataSnap サーバーを使用してセッション情報を取得する方法を決定しようとしています。

同じクライアント ページで、TDSSession メソッド GetThreadSession を使用して現在のスレッド セッションにアクセスできることを知っています。

ただし、私がやりたいことは、データをセッション (putData) に保存し、ユーザーがページ 1 からページ 2 に移動したときにデータを取得できるようにすることです。現在、ユーザーが別のページに移動すると、セッションが失われ、新しいセッションが作成されるため、以前に設定したセッションのデータが失われます。

TDSSessionManager.SetThreadSession(sessionid) で遊んでみましたが、うまくいかないようです。

高く評価されている Marco Cantu のホワイト ペーパーを確認しましたが、この問題の解決策は示されていません。

これについて私が得ることができる助けは素晴らしいでしょう-たとえそれが「ねえ、このトピックは本Xでカバーされている」だけであっても.

ありがとう!

4

4 に答える 4

1

Cookie を使用してセッション情報を保存するには、クライアント側の JavaScript を微調整する必要があります。

JavaScript クライアント セッションの最後の部分を参照してください

サーバー側オブジェクトをセッションに対してアクティブに保ちたい場合は、セッションライフサイクルを使用してください。

于 2015-07-26T03:30:28.090 に答える
1

TDSSessionManager.SetThreadSession(sessionid) は、Session.sessionname で動作します。

さらに、Lifecycle が Session に設定されていることを確認してください (tondrej が述べているように)。

クライアントを再接続する場合。新しいセッションが開始されます。したがって、Datasnap 接続を開いたままにしておく必要があります。

または、ライフサイクルをサーバーに設定して、クライアント セッションを自分で管理することもできます。

編集:残りのサーバーはステートレスです。そのため、現在のページをクライアントに保存する必要があります。サーバーから必要なページを照会します

于 2012-11-14T12:18:51.263 に答える
0

あなたがする必要があるのは、インスタンスLifeCycleのプロパティを(ステートフル)に設定することだと思います。あなたの質問から、現在(ステートレス)を使用しているようです。TDSServerClassSessionInvocation

于 2012-07-09T13:16:11.210 に答える