2010-12-28 10 views
3

私は、すべてのセッションをシリアル化する必要がある外部セッション状態サーバーを使用する必要があります。私は[Serializeable()]属性を使用して、セッションにシリアル化可能なすべてのクラスを保存しようとしています。ASPXページをシリアル化しますか?

しかし、私は次のエラー得続ける:

StateServer

Unable to serialize the session state.

SQLServerモードを、ASP.NETは、セッション状態オブジェクトをシリアル化し、結果として非直列化可能オブジェクトまたはMarshalByRefオブジェクトが許可されていません。同じ制限が、 '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です。しかし、私はこのページをセッションに保存しようとしません。だからこのエラーは私にかなり不思議に思う。

私はコードビハインドで次の操作を実行しようとした:

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

これは全く役に立ちませんでした!

だから、私はASPXページをシリアライズできるのだろうか?これが理にかなっているかどうかは分かりません。疑わしい!

おかげで...

+1

なぜページクラスをセッションに保存しようとしていますか?何かがうまくいきません。 – Chandu

+0

セッションにそのページのインスタンスを格納しているようです。あなたの解決策で 'Session'をすばやく検索して、犯人を見つけることができるかどうか確認してください。 –

+5

セッション状態のオブジェクトの1つにページへの参照があると思われます。 –

答えて

3

私は答えを見つけた...そして、あなたたちは正しかった:私の目的の1つは、ページへの参照を持っていました。

イベントのリストを持つPlayerというオブジェクトがありました。これらのイベントの1つに、現在のページがターゲットとして設定されています。

私はイベントに以下の非直列化可能な属性与えた:そして、すべてがうまく働いていた

[field: NonSerialized] 

を。そして、彼らはすべて、いつまでも幸せに生きていました!

関連する問題