2012-07-09 29 views
6

Tôi đang cố gắng xác định cách truy xuất thông tin phiên bằng cách sử dụng máy chủ REST DataSnap Delphi REST.Delphi XE2 Datasnap Session Management - nhận thông tin phiên sau khi tải lại trang

Tôi biết rằng, khi trên cùng một trang khách hàng, bạn có quyền truy cập vào phiên chuỗi hiện tại bằng phương pháp TDSSession GetThreadSession.

Điều tôi muốn làm, tuy nhiên, lưu trữ dữ liệu trong phiên (putData) và vẫn có thể truy xuất dữ liệu khi người dùng di chuyển từ trang1 đến trang2. Hiện tại, nếu người dùng chuyển sang một trang khác, phiên bị mất và phiên mới được tạo, do đó mất dữ liệu trong phiên mà trước đó tôi đã đặt.

Tôi đã thử chơi với TDSSessionManager.SetThreadSession (sessionid) - nhưng tôi không thể làm cho nó hoạt động.

Tôi đã xem xét nhiều giấy trắng nổi tiếng Marco Cantu, tuy nhiên, nó không cung cấp giải pháp cho vấn đề này.

Bất kỳ trợ giúp nào tôi có thể thực hiện điều này sẽ rất tuyệt vời - ngay cả khi nó chỉ là 'hey, chủ đề này được đề cập trong cuốn sách X'.

Cảm ơn!

Trả lời

0

Tôi tin rằng những gì bạn cần làm là đặt LifeCycle thuộc tính của số TDSServerClass của bạn thành Session (trạng thái). Từ câu hỏi của bạn có vẻ như bạn hiện đang sử dụng Invocation (không quốc tịch).

+0

Xin lỗi - đó sẽ là thông tin hữu ích được cung cấp ban đầu. TDSServerClass hiện có thuộc tính Vòng đời của nó được đặt thành Phiên. – ConBran

+0

Tôi nghĩ rằng điều này sẽ làm việc ra khỏi hộp nếu kết nối HTTP 1.1 KeepAlive có hiệu lực. –

+1

Ngoài hộp, các ứng dụng REST sử dụng TIdHTTPWebBrokerBridge làm máy chủ. Theo mặc định, thuộc tính KeepAlive là 'false', do đó, theo đề xuất của bạn, khi máy chủ được khởi động, tôi đặt thuộc tính KeepAlive thành 'true', tuy nhiên, sự cố vẫn không may. – ConBran

1

TDSSessionManager.SetThreadSession (sessionid) hoạt động với Session.sessionname.

Plus đảm bảo Vòng đời của bạn được đặt thành Phiên (như được tuyên bố bởi tondrej).

Nếu bạn kết nối lại máy khách của mình. một phiên mới được bắt đầu. Vì vậy, bạn muốn giữ kết nối Datasnap của bạn mở.

Hoặc bạn có thể đặt vòng đời thành Máy chủ và tự quản lý phiên khách hàng.

Chỉnh sửa: Máy chủ còn lại không có trạng thái. Vì vậy, bạn cần lưu trữ trang bạn đang truy cập trên Máy khách. Và Truy vấn Trang cần thiết từ Máy chủ

1

Bạn phải tinh chỉnh JavaScript phía máy khách để sử dụng cookie để lưu trữ thông tin phiên.

Xem phần cuối cùng của JavaScript Client Sessions

Nếu bạn muốn giữ các đối tượng phía máy chủ hoạt động cho phiên sử dụng vòng đời phiên.

+0

Để nhớ ID phiên giữa các lần tải trang, bạn cần phải bật cookie phiên. Để thực hiện việc này, ví dụ: hãy gọi: initSessionData (true, "chat_"); –

Các vấn đề liên quan