序列化ASPX页面?

时间:2010-12-28 21:42:39

标签: c# asp.net session serialization

我处于静坐状态,我需要使用外部会话状态服务器,这需要序列化我的所有会话。我一直试图通过使用[Serializeable()]属性使我在会话中存储的所有类都可序列化。

但是,我一直收到以下错误:

  

无法序列化会话状态。

StateServerSQLServer模式下,ASP.NET将序列化会话状态对象,因此不允许使用不可序列化的对象或MarshalByRef对象。如果自定义会话状态存储在“Custom”模式下完成类似的序列化,则适用相同的限制。

然而,更有趣的是堆栈跟踪:

  

[SerializationException:在程序集'App_Web_pwonykbc中输入'ASP.useroverview_aspx',Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null'未标记为可序列化。]

     

System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType type)+9452985
     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.Web.Util.AltSerialization.WriteValueToStream(Object value,BinaryWriter writer)+1708

类型ASP.useroverview_aspx就我所知的ASPX页面而言。我加载的页面是Useroverview.aspx。但是,我不会尝试将此页面存储在会话中。所以这个错误让我想起了很多。

我尝试在代码隐藏中执行以下操作:

[Serializable()]
public partial class UserOverview : Page
{
    private static readonly int TimerInterval = HttpContext.Current.IsDebuggingEnabled ? 2000 : 750;
    // ...
}

这根本没有帮助!

所以我想知道是否可以序列化ASPX页面?这不知道这是否有意义。我对此表示怀疑!

...谢谢

1 个答案:

答案 0 :(得分:3)

我找到了答案..你们是对的:我的一个对象有一个对页面的引用。

我有一个对象播放器,它有一个事件列表。其中一个事件将当前页面作为目标,从而解决问题。

我为该事件提供了以下非序列化属性:

[field: NonSerialized]

然后一切正常。他们从此过着幸福的生活!