回收IIS应用程序池后,为什么会出现TypeLoadExceptionHolder错误?

时间:2016-08-03 16:22:18

标签: asp.net iis serialization stateserver

我有一个ASP.NET Web应用程序,它使用StateServer进行会话。该应用程序在会话中存储了几个信息;一个特别是一个对象图,其中涉及的所有对象都具有Seri​​alizable属性。这一切都正常,直到我回收托管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之外,所以它不会受到回收应用程序池的影响。情况不是这样吗?

0 个答案:

没有答案