Tôi biết đó là một câu hỏi đơn giản, nhưng tôi dường như không thể lôi nó ra khỏi tiếng ồn của Google. Tôi biết .NET có thể sử dụng dịch vụ trạng thái phiên hoặc cơ sở dữ liệu SQL để trả về trạng thái phiên của nó, nhưng tôi không biết liệu ASP có cung cấp bất kỳ tùy chọn ngoài quy trình nào để lưu trữ nó hay không. Liệu nó có bất kỳ, hoặc tôi bị mắc kẹt với mất các biến phiên trên các ứng dụng ASP khi một máy chủ cân bằng tải được đưa vào diễn đàn?Đang trong quá trình cách duy nhất ASP cổ điển có thể lưu trữ trạng thái phiên không?
Trả lời
Vâng, chỉ trong bộ nhớ
Từ MSDN Full Article
ASP thực hiện
Các bản phiên ASP chỉ có thể dữ liệu phiên lưu trữ trong bộ nhớ. Để lưu trữ dữ liệu phiên cho SQL Server, một đối tượng Microsoft® Visual Basic® 6.0 COM tùy chỉnh được viết để quản lý trạng thái phiên thay vì sử dụng đối tượng phiên ban đầu. Đối tượng COM này sẽ được khởi tạo ở đầu mỗi yêu cầu Web và tải lại dữ liệu phiên từ SQL Server. Khi kịch bản lệnh ASP kết thúc, đối tượng này sẽ bị chấm dứt và trạng thái phiên sẽ được lưu lại SQL Server.
Mục đích chính của đối tượng Visual Basic 6 COM Session là cung cấp quyền truy cập vào đối tượng nội tại Microsoft® Internet Information Server. Đối tượng Visual Basic 6.0 COM Session sử dụng lớp mySession của SessionUtility Assembly để giữ trạng thái phiên, và lớp SessionPersistence của SessionUtility để tải và lưu dữ liệu phiên với SQL Server. Các lớp mySession và SessionPersistence được hiển thị dưới dạng đối tượng COM sử dụng tiện ích regasm.exe. Tiện ích regasm.exe có thể đăng ký và tạo một thư viện kiểu cho trình khách COM để sử dụng các lớp khung.
Thông tin trạng thái phiên được tải lại trong khi xây dựng đối tượng. Hàm khởi tạo (class_initialize) trước tiên sẽ truy lục cookie phiên, phiên hết giờ (SessionTimeOut) và chuỗi kết nối cơ sở dữ liệu (SessionDSN) từ đối tượng Application và tạo một cá thể của lớp mySession để giữ dữ liệu phiên. Sau đó, hàm tạo sẽ cố gắng tải lại dữ liệu phiên từ SQL Server bằng cookie đã cho. Nếu máy chủ SQL không có thông tin phiên, hoặc phiên đã hết hạn, một cookie mới sẽ được phát hành. Nếu SQL Sever quay trở lại với dữ liệu trạng thái phiên, trạng thái phiên sẽ được lưu trữ trong đối tượng mySession.
Không có gì khác được tích hợp sẵn, mặc dù trong ASP Classic, thật dễ dàng để xây dựng hệ thống quản lý phiên của riêng bạn. hình thức đơn giản nhất là một bảng trong một db như sau:
SessionID int PK, Fields văn bản, giá trị văn bản, Expires DateTime
Hãy đến với một số loại CSV encoder/decoder cho các lĩnh vực và các giá trị và điền một tập hợp trên mỗi trang. Sau đó lưu nó sau khi trang thực hiện và cập nhật thời gian hết hạn. Sau đó, chỉ cần có một cookie theo dõi ID phiên hoặc vượt qua nó xung quanh trong chuỗi truy vấn.
- 1. Phiên trong ASP cổ điển
- 2. Mảng hợp nhất trong ASP cổ điển
- 3. ASP cổ điển: Cách viết dữ liệu chuỗi unicode trong ASP cổ điển?
- 4. VBScript/ASP cổ điển
- 5. Cách bật ASP cổ điển trong IIS7.5
- 6. ASP cổ điển: Lỗi chụp
- 7. Nơi lưu chuỗi kết nối cho ASP cổ điển?
- 8. Chức năng bị quá tải trong asp cổ điển JScript
- 9. ASP cổ điển trong ASP.NET MVC (C#)
- 10. Chuỗi đa luồng trong ASP cổ điển
- 11. Đặt HTTPONLY cho Cookie phiên ASP cổ điển
- 12. VS2010 Hỗ trợ ASP cổ điển
- 13. ASP SQL Injection cổ điển
- 14. Mã nhận xét trong ASP cổ điển
- 15. Cấu trúc lớp trong asp cổ điển
- 16. Trạng thái lưu trữ trong Java
- 17. ASP cổ điển - Bắt 500 lỗi
- 18. Có OR/M cho ASP cổ điển không?
- 19. Cách tốt nhất để chạy truy vấn DB dài trong ASP cổ điển?
- 20. Thực hành tốt nhất cho 'InProc' vs 'StateServer' cho trạng thái phiên ASP .NET
- 21. Tôi có thể kết hợp asp.net 4.0 với asp cổ điển, hoặc tôi có thể chuyển đổi asp cổ điển sang asp.net không?
- 22. MongoDB có thể được lưu trữ trong quá trình không?
- 23. Các trang ASP cổ điển có chạy trên các phiên bản Windows qua Windows 7 không?
- 24. Đọc giá trị web.config trong ASP cổ điển
- 25. Cách đăng một trang từ asp.net lên ASP cổ điển
- 26. Các trang ASP cổ điển có thể chạy trong Azure không?
- 27. Gọi dịch vụ web REST từ trang asp cổ điển
- 28. Tự động kiểm tra ASP cổ điển
- 29. Cách xuất tệp Excel * .xls từ ASP cổ điển
- 30. Cách lưu trạng thái Fragment có listview
Tìm thấy tuyệt vời, cảm ơn rất nhiều! – Chris
Không chắc chắn lý do tại sao đối tượng COM cần phải được viết trong Visual Basic 6.0, nó có thể là bất kỳ ngôn ngữ miễn là kết quả là một đối tượng COM được gọi bằng ngôn ngữ kịch bản được sử dụng trong ASP. – AnthonyWJones