2008-12-30 34 views
5

Tôi đã được giao nhiệm vụ chuyển đổi một trang ASP.NET hiện có bằng cách sử dụng quản lý phiên InProc để sử dụng máy chủ ASP.NET State.Serialize ASP.NET Bộ sưu tập kiểm soát

Tất nhiên điều này có nghĩa là mọi thứ được lưu trữ trong Phiên phải được tuần tự hóa.

Một trong những trang phức tạp nhất trong ứng dụng hiện đang lưu trữ bộ sưu tập kiểm soát ASP.NET vào Phiên. Điều này không thành công vì các điều khiển không thể được tự động tuần tự hóa.

Viết tắt hoàn toàn cách trang hoạt động để ngăn chặn nhu cầu lưu trữ bộ sưu tập kiểm soát trong Phiên, có ai có mẹo/giải pháp để làm cho bộ sưu tập có thể tuần tự không?

Trả lời

7

Viết lại trang. Bạn sẽ cảm ơn bản thân sau. Có chắc chắn là các vấn đề khác nếu "lập trình" ban đầu (và tôi sử dụng thuật ngữ đó lỏng lẻo ở đây) nghĩ rằng đó là một ý tưởng tốt để lưu trữ một hệ thống phân cấp điều khiển trong phiên.

+0

Cảm ơn bạn đã đề xuất, tôi đã thực hiện điều này và dành phần lớn tuần trước để làm lại trang để không cần lưu trữ các điều khiển trong phiên. Việc viết lại dường như hoạt động tốt. –

+0

Rất vui khi biết điều đó. Đôi khi bạn chỉ cần cắn viên đạn và hack xuyên qua bàn chải quá mức với một chiếc dao rựa khổng lồ cho đến khi mọi thứ nhìn đúng. :-) –

0

Câu trả lời đầu tiên mà bạn nghĩ đến là viết lại một phần (tôi không nghĩ sẽ có một câu trả lời dễ dàng cho điều này). Nếu đó là một số lượng nhỏ các loại điều khiển, hãy viết các điều khiển của riêng bạn kế thừa từ các điều khiển đó và cũng có thể triển khai ISerializable. Sau đó, sử dụng tìm kiếm và thay thế, thay thế các điều khiển của trang bằng các phiên bản của bạn. Nếu bạn đang sử dụng một số lượng lớn các loại kiểm soát, bạn có thể dành nhiều thời gian mở rộng các loại tiêu chuẩn hơn là bạn sẽ tái cấu trúc trang.

Công việc sẽ có trong tuần tự hóa và deserialization của các điều khiển khi bạn khởi tạo chúng, để đảm bảo bạn đang chụp những gì bạn cần (giá trị TextBox, IsSelected, v.v.).

Đây rõ ràng là một hack, nhưng nếu ưu tiên của bạn thực sự không viết lại chức năng của trang đó, điều này có thể phù hợp với bạn. Sau đó, tất nhiên, bạn cần phải thêm giải pháp này vào "nợ kỹ thuật" mà ứng dụng của bạn đang tích luỹ, để đảm bảo nó luôn nằm trên radar của một ai đó để tái cấu trúc tại một thời điểm nào đó.

2

Không lưu trữ bộ sưu tập kiểm soát ở trạng thái phiên. Tess có rất nhiều bài viết về điều này, ví dụ: this one.

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