2012-08-02 22 views
8

Có rất nhiều câu hỏi tương tự như này ... nhưng tôi không thấy làm thế nào họ có vấn đề cụ thể này:Không thể tuần tự hóa trạng thái phiên vì Microsoft.Web.Services3.StateManager?

Tôi có một webservice mà trả về một lỗi mà bắt đầu với:

Không để tuần tự hóa trạng thái phiên. Trong chế độ 'StateServer' và 'SQLServer', ASP.NET sẽ tuần tự hóa các đối tượng trạng thái phiên, và kết quả là các đối tượng không thể tuần tự hóa hoặc các đối tượng MarshalByRef là không được phép. Giới hạn tương tự cũng áp dụng nếu việc tuần tự hóa tương tự được thực hiện bởi cửa hàng trạng thái phiên tùy chỉnh trong chế độ 'Tùy chỉnh'.

Vì vậy, các câu hỏi như this đề cập đến tìm kiếm SerializationException, tìm hiểu những gì không thể được tuần tự hóa và làm cho nó có thể tuần tự hóa được. Nghe có vẻ đơn giản ... nhưng khi tôi tìm kiếm nó, tôi tìm thấy điều này:

[SerializationException: Loại 'Microsoft.Web.Services3.StateManager' trong Microsoft.Web.Services3 hội', Version = 3.0.0.0 , Văn hóa = trung tính, PublicKeyToken = 31bf3856ad364e35' không được đánh dấu là serializable.]

này confuses me ... có vẻ như nó thực sự cố gắng để serialize các StateManager ... là nó chỉ rằng nó trốn mà cái gì khác bên trong là StateManager không thể được serialized? Nếu vậy, có cách nào để tìm ra cái gì không? Hoặc là StateManager thực sự phải được serializable cho một số lý do? (Tôi nghi ngờ tôi không nêu rõ điều này rõ ràng ... xin lỗi ... nếu bạn có thắc mắc, tôi sẽ cố hết sức để trả lời chúng.)

Một điều mà tôi cũng cần lưu ý là chúng tôi sử dụng NCache như một nhà cung cấp dịch vụ lưu trữ phiên, có vẻ như nó có thể liên quan theo một cách nào đó. Nhưng nó không rõ ràng với tôi như thế nào có thể gây ra những gì tôi nhìn thấy.

+0

Điều đó rất lạ. Bạn có thể ghim nó xuống một dòng mã cụ thể không? Điều đó có xảy ra trên mọi cuộc gọi phương thức hay chỉ một số cuộc gọi nhất định? –

+0

Đáng buồn thay, không. Nó chỉ xảy ra đôi khi, và mặc dù nó sẽ xảy ra nhiều lần trong một hàng, sau đó nó biến mất và chúng tôi không thể tái tạo nó sau đó, vì vậy thật khó để theo dõi. – Beska

+0

Tôi cho rằng bạn đã xem xét mọi thứ bạn đang đưa vào trạng thái phiên hoặc sử dụng phiên làm cửa hàng sao lưu và bạn không vô tình đưa StateManager vào phiên. (Có thể bạn sẽ thấy nhiều hơn một mô hình nếu bạn đang làm điều đó, thực sự). Vì bạn nói rằng bạn đang sử dụng NCache, tôi sẽ bắt đầu nói chuyện với công ty đó và xem lại diễn đàn của công ty, v.v., nếu bạn chưa có. –

Trả lời

1

Nếu bạn đang sắp xếp một đối tượng tùy chỉnh, hãy đảm bảo trang trí lớp học với thuộc tính. Nếu không có điều này trên bất kỳ đối tượng mà bạn đưa vào trạng thái phiên serializer sẽ thất bại. Bạn có thể cần phải cô lập các mục bạn đang lưu trữ và kiểm tra tài sản của nó và rằng chính nó có thuộc tính đó.

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