如何验证我的ASP.NET会话数据是否可以正确序列化?

时间:2011-01-28 08:49:50

标签: asp.net session serialization

我正在尝试从保存会话数据“InProc”切换到“StateServer”。

为此,我将一堆类标记为[Serializable]并重写了一些以前无法序列化的类,并标记了一些不应序列化为[NonSerialized]的值。

现在我的问题是,不是从框架中获得编译时错误,异常或任何其他问题的指示,我得到会话,其中存储的一些值被更改为空值,在会话本身或会话中包含的对象内部。

为什么没有错误迹象?

导致空值的原因是什么?

如何检测会话的序列化是否正确?

由于

1 个答案:

答案 0 :(得分: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);
    }
}