Serialization Error

M

Maximus

Hi Everyone,

I was using Inprocess session objects, but incase of aspnet process
crashes the session objects were lost as a result I decided to shift to
out of porocess session objects. For this i had to serialize the
objects. While doing that I made the classes serializable whose objects
I store in sessions. However, when I run the application I get the
following error.






Unable to serialize the session state. Please note that non-serializable
objects or MarshalByRef objects are not permitted when session state
mode is 'StateServer' or 'SQLServer'.
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Unable to serialize the
session state. Please note that non-serializable objects or MarshalByRef
objects are not permitted when session state mode is 'StateServer' or
'SQLServer'.

Source Error:

An unhandled exception was generated during the execution of the current
web request. Information regarding the origin and location of the
exception can be identified using the exception stack trace below.

Stack Trace:


[SerializationException: The type ASP.default_aspx in Assembly h5ahqjmx,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null is not marked as
serializable.]

System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType
type, Boolean excludeNonSerializable) +853

System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type
type, StreamingContext context) +300

System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo()
+103

System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object
obj, ISurrogateSelector surrogateSelector, StreamingContext context,
SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter) +493

System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Object
obj, ISurrogateSelector surrogateSelector, StreamingContext context,
SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter) +48

System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo
objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo) +515

System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object
graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) +738

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream
serializationStream, Object graph, Header[] headers, Boolean fCheck) +136

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream
serializationStream, Object graph) +13
System.Web.Util.AltSerialization.WriteValueToStream(Object value,
BinaryWriter writer)

[HttpException (0x80004005): Unable to serialize the session state.
Please note that non-serializable objects or MarshalByRef objects are
not permitted when session state mode is 'StateServer' or 'SQLServer'.]
System.Web.Util.AltSerialization.WriteValueToStream(Object value,
BinaryWriter writer)
System.Web.SessionState.SessionDictionary.Serialize(BinaryWriter writer)

System.Web.SessionState.StateClientManager.Serialize(SessionStateItem
item, Stream stream)

System.Web.SessionState.OutOfProcStateClientManager.System.Web.SessionState.IStateClientManager.Set(String
id, SessionStateItem item, Boolean inStorage)
System.Web.SessionState.SessionStateModule.OnReleaseState(Object
source, EventArgs eventArgs)

System.Web.SyncEventExecutionStep.System.Web.HttpApplication+IExecutionStep.Execute()
+60
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&
completedSynchronously) +87




I'll appreciate if anybody could help me with this.

Thanks.
 
M

Manoj G [MVP]

You can serialize an object of a class if the class and all its members (the
object graph) are themselves serializable. For Session state objects they
also should not be derived from MarshalByRefObject class. Check if all the
members themselves are serializable and also that none of them are
MarshalByRefObjects. If there are any, you can mark them with a
NonSerialized attribute, so that the formatter does not serialize these
(But, ofcource the state of the object in this case will be incomplete).

--
HTH,
Manoj G [.NET MVP]
Site: http://www15.brinkster.com/manoj4dotnet
Blog: http://msmvps.com/manoj/

Maximus said:
Hi Everyone,

I was using Inprocess session objects, but incase of aspnet process
crashes the session objects were lost as a result I decided to shift to
out of porocess session objects. For this i had to serialize the
objects. While doing that I made the classes serializable whose objects
I store in sessions. However, when I run the application I get the
following error.






Unable to serialize the session state. Please note that non-serializable
objects or MarshalByRef objects are not permitted when session state
mode is 'StateServer' or 'SQLServer'.
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Unable to serialize the
session state. Please note that non-serializable objects or MarshalByRef
objects are not permitted when session state mode is 'StateServer' or
'SQLServer'.

Source Error:

An unhandled exception was generated during the execution of the current
web request. Information regarding the origin and location of the
exception can be identified using the exception stack trace below.

Stack Trace:


[SerializationException: The type ASP.default_aspx in Assembly h5ahqjmx,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null is not marked as
serializable.]

System.Runtime.Serialization.FormatterServices.InternalGetSerializableMember
s(RuntimeType
type, Boolean excludeNonSerializable) +853

System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type
type, StreamingContext context) +300

System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInf
o()
System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize
(Object
obj, ISurrogateSelector surrogateSelector, StreamingContext context,
SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter) +493

System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Obj
ect
obj, ISurrogateSelector surrogateSelector, StreamingContext context,
SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter) +48

System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjec
tInfo
objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo) +515

System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object
graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) +738

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Str
eam
serializationStream, Object graph, Header[] headers, Boolean fCheck) +136

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Str
eam
serializationStream, Object graph) +13
System.Web.Util.AltSerialization.WriteValueToStream(Object value,
BinaryWriter writer)

[HttpException (0x80004005): Unable to serialize the session state.
Please note that non-serializable objects or MarshalByRef objects are
not permitted when session state mode is 'StateServer' or 'SQLServer'.]
System.Web.Util.AltSerialization.WriteValueToStream(Object value,
BinaryWriter writer)
System.Web.SessionState.SessionDictionary.Serialize(BinaryWriter writer)

System.Web.SessionState.StateClientManager.Serialize(SessionStateItem
item, Stream stream)

System.Web.SessionState.OutOfProcStateClientManager.System.Web.SessionState.
IStateClientManager.Set(String
id, SessionStateItem item, Boolean inStorage)
System.Web.SessionState.SessionStateModule.OnReleaseState(Object
source, EventArgs eventArgs)

System.Web.SyncEventExecutionStep.System.Web.HttpApplication+IExecutionStep.
Execute()
+60
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&
completedSynchronously) +87




I'll appreciate if anybody could help me with this.

Thanks.
 
M

Maximus

Hi Manoj,

Thanks for the reply, I tried that and have marked all the objects which
I could. In most cases it would tell me which object it could not
serialize. But here it is saying it cannot serialize 'ASP.default_aspx
in Assembly 9iq31h5o'.
What I dont understand is why is it trying to serialize the default.aspx
page and also where is this assmebly Assembly 9iq31h5o created.

Any help will be appreciated.


You can serialize an object of a class if the class and all its members (the
object graph) are themselves serializable. For Session state objects they
also should not be derived from MarshalByRefObject class. Check if all the
members themselves are serializable and also that none of them are
MarshalByRefObjects. If there are any, you can mark them with a
NonSerialized attribute, so that the formatter does not serialize these
(But, ofcource the state of the object in this case will be incomplete).

--
HTH,
Manoj G [.NET MVP]
Site: http://www15.brinkster.com/manoj4dotnet
Blog: http://msmvps.com/manoj/

Hi Everyone,

I was using Inprocess session objects, but incase of aspnet process
crashes the session objects were lost as a result I decided to shift to
out of porocess session objects. For this i had to serialize the
objects. While doing that I made the classes serializable whose objects
I store in sessions. However, when I run the application I get the
following error.






Unable to serialize the session state. Please note that non-serializable
objects or MarshalByRef objects are not permitted when session state
mode is 'StateServer' or 'SQLServer'.
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Unable to serialize the
session state. Please note that non-serializable objects or MarshalByRef
objects are not permitted when session state mode is 'StateServer' or
'SQLServer'.

Source Error:

An unhandled exception was generated during the execution of the current
web request. Information regarding the origin and location of the
exception can be identified using the exception stack trace below.

Stack Trace:


[SerializationException: The type ASP.default_aspx in Assembly h5ahqjmx,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null is not marked as
serializable.]


System.Runtime.Serialization.FormatterServices.InternalGetSerializableMember
s(RuntimeType

type, Boolean excludeNonSerializable) +853

System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type
type, StreamingContext context) +300


System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInf
o()

System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize
(Object

obj, ISurrogateSelector surrogateSelector, StreamingContext context,
SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter) +493


System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Obj
ect

obj, ISurrogateSelector surrogateSelector, StreamingContext context,
SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter) +48


System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjec
tInfo

objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo) +515


System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object

graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) +738


System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Str
eam

serializationStream, Object graph, Header[] headers, Boolean fCheck) +136


System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Str
eam
serializationStream, Object graph) +13
System.Web.Util.AltSerialization.WriteValueToStream(Object value,
BinaryWriter writer)

[HttpException (0x80004005): Unable to serialize the session state.
Please note that non-serializable objects or MarshalByRef objects are
not permitted when session state mode is 'StateServer' or 'SQLServer'.]
System.Web.Util.AltSerialization.WriteValueToStream(Object value,
BinaryWriter writer)
System.Web.SessionState.SessionDictionary.Serialize(BinaryWriter
writer)

System.Web.SessionState.StateClientManager.Serialize(SessionStateItem
item, Stream stream)


System.Web.SessionState.OutOfProcStateClientManager.System.Web.SessionState.
IStateClientManager.Set(String

id, SessionStateItem item, Boolean inStorage)
System.Web.SessionState.SessionStateModule.OnReleaseState(Object
source, EventArgs eventArgs)


System.Web.SyncEventExecutionStep.System.Web.HttpApplication+IExecutionStep.
Execute()

+60
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&
completedSynchronously) +87




I'll appreciate if anybody could help me with this.

Thanks.
 
G

Gaurav Khanna [C# MVP]

Hi!

Thats a temporary assembly which the ASP.NET runtime creates for you when
compiling the page before executing it.

That said, ensure that any classes instantiated within your page are also
serializable. The object graph, which Manoj referred to in his reply, not
only includes a serializable class's members, but also any objects
referenced by the class's objects.

--
Regards,
Kumar Gaurav Khanna
-----------------------------------------------------------------
Microsoft MVP - C#/.NET, MCSE Windows 2000/NT4, MCP+I
WinToolZone - Spelunking Microsoft Technologies
http://www.wintoolzone.com/
OpSupport - Spelunking Rotor
http://opsupport.sscli.net/
Bangalore .NET Users' Group
http://groups.msn.com/bdotnet/
Maximus said:
Hi Manoj,

Thanks for the reply, I tried that and have marked all the objects which
I could. In most cases it would tell me which object it could not
serialize. But here it is saying it cannot serialize 'ASP.default_aspx
in Assembly 9iq31h5o'.
What I dont understand is why is it trying to serialize the default.aspx
page and also where is this assmebly Assembly 9iq31h5o created.

Any help will be appreciated.


You can serialize an object of a class if the class and all its members (the
object graph) are themselves serializable. For Session state objects they
also should not be derived from MarshalByRefObject class. Check if all the
members themselves are serializable and also that none of them are
MarshalByRefObjects. If there are any, you can mark them with a
NonSerialized attribute, so that the formatter does not serialize these
(But, ofcource the state of the object in this case will be incomplete).

--
HTH,
Manoj G [.NET MVP]
Site: http://www15.brinkster.com/manoj4dotnet
Blog: http://msmvps.com/manoj/

Hi Everyone,

I was using Inprocess session objects, but incase of aspnet process
crashes the session objects were lost as a result I decided to shift to
out of porocess session objects. For this i had to serialize the
objects. While doing that I made the classes serializable whose objects
I store in sessions. However, when I run the application I get the
following error.






Unable to serialize the session state. Please note that non-serializable
objects or MarshalByRef objects are not permitted when session state
mode is 'StateServer' or 'SQLServer'.
Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Unable to serialize the
session state. Please note that non-serializable objects or MarshalByRef
objects are not permitted when session state mode is 'StateServer' or
'SQLServer'.

Source Error:

An unhandled exception was generated during the execution of the current
web request. Information regarding the origin and location of the
exception can be identified using the exception stack trace below.

Stack Trace:


[SerializationException: The type ASP.default_aspx in Assembly h5ahqjmx,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null is not marked as
serializable.]

System.Runtime.Serialization.FormatterServices.InternalGetSerializableMember
s(RuntimeType
type, Boolean excludeNonSerializable) +853
System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type
type, StreamingContext context) +300

System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInf
o()

System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize
(Object
obj, ISurrogateSelector surrogateSelector, StreamingContext context,
SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter) +493

System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Obj
ect
obj, ISurrogateSelector surrogateSelector, StreamingContext context,
SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter) +48

System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjec
tInfo
objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo) +515

System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object
graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) +738

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Str
eam
serializationStream, Object graph, Header[] headers, Boolean fCheck) +136

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Str
eam
serializationStream, Object graph) +13
System.Web.Util.AltSerialization.WriteValueToStream(Object value,
BinaryWriter writer)

[HttpException (0x80004005): Unable to serialize the session state.
Please note that non-serializable objects or MarshalByRef objects are
not permitted when session state mode is 'StateServer' or 'SQLServer'.]
System.Web.Util.AltSerialization.WriteValueToStream(Object value,
BinaryWriter writer)
System.Web.SessionState.SessionDictionary.Serialize(BinaryWriter
writer)

System.Web.SessionState.StateClientManager.Serialize(SessionStateItem
item, Stream stream)

System.Web.SessionState.OutOfProcStateClientManager.System.Web.SessionState.
IStateClientManager.Set(String
id, SessionStateItem item, Boolean inStorage)
System.Web.SessionState.SessionStateModule.OnReleaseState(Object
source, EventArgs eventArgs)

System.Web.SyncEventExecutionStep.System.Web.HttpApplication+IExecutionStep.
Execute()
+60
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&
completedSynchronously) +87




I'll appreciate if anybody could help me with this.

Thanks.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,576
Members
45,054
Latest member
LucyCarper

Latest Threads

Top