1

I have an ASP.NET web application that uses StateServer for the session. The app stores several bits of information in the session; one in particular being an object graph where all of the objects involved have the Serializable attribute. This all works fine until I recycle the app pool that hosts the web app.

If I'm logged in and my session has an object graph stored in it and I recycle the app pool then reload the page, I get the following exception:

Error in: MyUrl Source: mscorlib Error Message: Object of type 'System.Runtime.Serialization.TypeLoadExceptionHolder' cannot be converted to type 'MyObject'. 
Stack Trace:    

at System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast) at System.RuntimeType.CheckValue(Object value, Binder binder, CultureInfo culture, BindingFlags invokeAttr)
at System.Reflection.RtFieldInfo.UnsafeSetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture) at System.Runtime.Serialization.FormatterServices.SerializationSetValue(MemberInfo fi, Object target, Object value)
at System.Runtime.Serialization.FormatterServices.PopulateObjectMembers(Object obj, MemberInfo[] members, Object[] data)
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseObjectEnd(ParseRecord pr)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
at System.Web.Util.AltSerialization.ReadValueFromStream(BinaryReader reader)
at System.Web.SessionState.SessionStateItemCollection.ReadValueFromStreamWithAssert() at System.Web.SessionState.SessionStateItemCollection.DeserializeItem(String name, Boolean check)
at System.Web.SessionState.SessionStateItemCollection.get_Item(String name)
at System.Web.HttpSessionStateWrapper.get_Item(String name)
at MyCode

I was under the impression that because the session state is stored out of proc that it would be unaffected by recycling the app pool. Is this not the case?

Raymond Saltrelli
  • 4,071
  • 2
  • 33
  • 52

0 Answers0