gpt4 book ai didi

c# - 序列化 ASPX 页面?

转载 作者:行者123 更新时间:2023-11-30 16:31:53 26 4
gpt4 key购买 nike

我处于需要使用外部 session 状态服务器的情况,这需要对我的所有 session 进行序列化。我一直在尝试通过使用 [Serializeable()] 属性使我存储在 session 中的所有类都可序列化。

但是,我不断收到以下错误:

Unable to serialize the session state.

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

不过更有趣的是堆栈跟踪:

[SerializationException: Type 'ASP.useroverview_aspx' in Assembly 'App_Web_pwonykbc, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.]

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。但是,我不尝试将此页面存储在 session 中。所以这个错误让我很疑惑。

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

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

这根本没有帮助!

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

谢谢...

最佳答案

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

我有一个 Player 对象,它有一个事件列表。其中一个事件将当前页面作为目标,这导致了问题。

我为事件赋予了以下不可序列化的属性:

[field: NonSerialized]

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

关于c# - 序列化 ASPX 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4549747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com