Как мой объект попал в состояние страницы ASP.NET? - PullRequest
0 голосов
/ 23 марта 2010

Я знаю, что это за ошибка, как ее исправить и т. Д.

Мой вопрос заключается в том, что я не знаю, почему моя текущая страница, которую я разрабатываю, выдает эту ошибку, когда я никоим образом не использую класс foo, и при этом я ничего не устанавливаю в viewstate. Я часто использую постбэки, но, как я уже сказал, я не храню ничего в состоянии просмотра и т. Д. Одно целое число.

Я использую nhibernate, если это актуально.

Есть идеи, почему мне нужно пометить эти классы как сериализуемые, которые не используются? С чего мне начать расследование?

[SerializationException: Type 'FlexiCommerce.Persistence.NH.ContentPersister' in Assembly 'FlexiCommerce.Persistence.NH, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.]
   System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType type) +9434541
   System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type type, StreamingContext context) +247
   System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() +160
   System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter, SerializationBinder binder) +218
   System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo) +388
   System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) +444
   System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck) +133
   System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) +13
   System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer, Object value) +2937

[ArgumentException: Error serializing value 'Music#2' of type 'FlexiCommerce.Components.Category.']
   System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer, Object value) +3252
   System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer, Object value) +2276

[ArgumentException: Error serializing value 'System.Object[]' of type 'System.Object[].']
   System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer, Object value) +3252
   System.Web.UI.ObjectStateFormatter.Serialize(Stream outputStream, Object stateGraph) +116
   System.Web.UI.ObjectStateFormatter.Serialize(Object stateGraph) +57
   System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Serialize(Object state) +4
   System.Web.UI.Util.SerializeWithAssert(IStateFormatter formatter, Object stateGraph) +37
   System.Web.UI.HiddenFieldPageStatePersister.Save() +79
   System.Web.UI.Page.SavePageStateToPersistenceMedium(Object state) +108
   System.Web.UI.Page.SaveAllState() +315
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2492

Ответы [ 2 ]

2 голосов
/ 23 марта 2010

Возможно, вы связываете данные объекты такого рода? Это явно как-то перешло в состояние страницы.

0 голосов
/ 23 марта 2010

Я бы предположил, что вы включили некоторые элементы кэширования либо для кэширования запросов, либо включили фактическое кэширование графов объектов в NHibernate (если это так, возможно, с использованием SysCacheProvider, который равен просто HttpRuntime.Cache).

Я бы порекомендовал независимо от использования кэширования или не отмечать каждый объект Domain как сериализуемый, так как в какой-то момент вполне разумно, что он будет проходить по проводам или просто помещаться в контейнер ViewState / Session.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...