1

我有一个使用 StateServer 进行会话的 ASP.NET Web 应用程序。该应用程序在会话中存储了几位信息;特别是一个对象图,其中涉及的所有对象都具有 Serializable 属性。在我回收托管 Web 应用程序的应用程序池之前,这一切都很好。

如果我已登录并且我的会话中存储了一个对象图,并且我回收了应用程序池然后重新加载页面,我会收到以下异常:

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

我的印象是,由于会话状态存储在 proc 之外,因此它不会受到回收应用程序池的影响。不是这样吗?

4

0 回答 0