Я нахожусь в ситуации, когда мне нужно использовать внешний сервер состояния сеанса, который требует сериализации всех моих сеансов. Я пытался сделать все классы, которые я храню в сеансах, сериализуемыми, используя атрибут [Serializeable()]
.
Тем не менее, я получаю следующую ошибку:
Невозможно сериализовать состояние сеанса.
В режимах StateServer
и SQLServer
ASP.NET сериализует объекты состояния сеанса, и в результате несериализуемые объекты или объекты MarshalByRef
не допускаются. То же ограничение применяется, если аналогичная сериализация выполняется в пользовательском хранилище состояний сеанса в режиме 'Custom
'.
Однако более интересным является трассировка стека:
[Исключение SerializationException: введите «ASP.useroverview_aspx» в сборке «App_Web_pwonykbc, версия = 0.0.0.0, Culture = нейтральный, PublicKeyToken = null» не помечен как сериализуемый.]
System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers (тип RuntimeType) +9452985
System.Runtime.Serialization.FormatterServices.GetSerializableMembers (Тип типа, контекст StreamingContext) +247
System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo () +160
System.Runtime.Serialization.
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write (WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo) +388
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize (Граф объектов, заголовок [] inHeaders, __BinaryWriter serWriter, логический fCheck) +444
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize (поток serializationStream, граф объектов, заголовки [], логический fCheck) +133
System.Web.Util.AltSerialization.WriteValueToStream (значение объекта, средство записи BinaryWriter) + 1708
Тип ASP.useroverview_aspx
- насколько я знаю ASPX-страница. Страница, которую я загружаю, является Useroverview.aspx
. Однако я не пытаюсь сохранить эту страницу в сеансе. Так что эта ошибка заставляет меня задуматься.
Я попытался сделать следующее в коде:
[Serializable()]
public partial class UserOverview : Page
{
private static readonly int TimerInterval = HttpContext.Current.IsDebuggingEnabled ? 2000 : 750;
// ...
}
Это совсем не помогло!
Так что мне интересно, можно ли сериализовать страницу ASPX? Это не знаю, будет ли это иметь смысл. Я сомневаюсь в этом!
Спасибо ...