2011-01-28 8 views
3

セッションデータ "InProc"を "StateServer"に保存しようとしています。ASP.NETセッションデータを正しくシリアル化できることをどのように検証できますか?

これを行うには、クラスを[Serializable]としてマークし、以前にシリアル化できなかったいくつかのクラスを書き直し、[NonSerialized]としてシリアル化しないでください。

私の問題は、コンパイル時エラー、例外、またはフレームワークからの問題の他の指示を得るのではなく、保存された値の一部がヌル値に変更されたセッションを戻します。セッション自体、またはセッションに含まれるオブジェクトの内部に存在します。

エラーの兆候がないのはなぜですか?

null値の原因は何ですか?

セッションのシリアル化が正しいことを検出するにはどうすればよいですか?あなたのシリアル化が正しく動作されていることを確認するためにいくつかのユニットテストを必要とするよう

おかげ

答えて

3

が鳴ります。

[Serializable] 
public class SomeClass { 
    public string SomeValue1; 
    public string SomeValue2; 
} 

class Program { 
    static void Main(string[] args) { 
     var value1 = new SomeClass() { SomeValue1 = "Hello", SomeValue2 = "World" }; 
     var ms = new MemoryStream(); 
     var formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); 
     formatter.Serialize(ms, value1); 
     ms.Position = 0; 
     var value2 = (SomeClass)formatter.Deserialize(ms); 
     Debug.Assert(value1.SomeValue1 == value2.SomeValue1); 
     Debug.Assert(value1.SomeValue2 == value2.SomeValue2); 
    } 
} 
関連する問題