会话状态服务器说扩展类没有可序列化

时间:2012-12-06 10:51:34

标签: asp.net serialization session-state

我将对象存储在会话状态(使用本地会话状态服务器),类def为:

 [Serializable]
 public class ExtendedOAuth2Parameters : OAuth2Parameters

但该服务仍在报告:

Unable to serialize the session state. In 'StateServer' and 'SQLServer' mode, ASP.NET will serialize the session state objects, and as a result non-serializable objects or MarshalByRef objects are not permitted.

[SerializationException: Type 'Google.GData.Client.OAuth2Parameters' in Assembly 'Google.GData.Client, Version=2.1.0.0, Culture=neutral, PublicKeyToken=04a59ca9b0273830' is not marked as serializable.]

如何绕过它?

1 个答案:

答案 0 :(得分:1)

根据错误消息,基类(Google.GData.Client.OAuth2Parameters)看起来不可序列化,因此即使您使用Serializable属性标记了类,但完整的类层次结构也不是。

您可能需要使用本身可序列化的bass类,或者如果您可以访问代码(可能不是?),请使Google.GData.Client.OAuth2Parameters类可序列化。

请记住,'serializability'依赖于任何给定类的完整类型树 - 即所有基类和成员类也需要可序列化,以使封闭类真正可序列化。