Yuriy Faktorovich Yuriy Faktorovich - 1 year ago 62
ASP.NET (C#) Question

How can I find which object in ASP.NET can't be serialized?

I'm getting the following error in my application:

Unable to serialize the session state.
In 'StateServer' and 'SQLServer' mode,
ASP.NET will serialize the session
state objects, and as a result
non-serializable objects or
MarshalByRef objects are not
permitted. The same restriction
applies if similar serialization is
done by the custom session state store
in 'Custom' mode.

The stack trace isn't providing any good information on which object is not able to serialize. Is there a good way to find the problem child?

I've found the issue, I was trying to serialize a Linq statement(not executed). But I'll try an choose an answer that would have best solved this issue.

Answer Source

Really, you should mainly be storing your own state data / objects (ideally modelled as DTO classes), in which case the answer is: any you mark as [Serializable] or ISerializable. You shouldn't be adding raw UI controls or other unknown objects to session-state. In particular, for reasons like this, which had a major performance impact on an app the other day.