我正在尝试从保存会话数据“InProc”切换到“StateServer”。
为此,我将一堆类标记为[Serializable]并重写了一些以前无法序列化的类,并标记了一些不应序列化为[NonSerialized]的值。
现在我的问题是,不是从框架中获得编译时错误,异常或任何其他问题的指示,我得到会话,其中存储的一些值被更改为空值,在会话本身或会话中包含的对象内部。
为什么没有错误迹象?
导致空值的原因是什么?
如何检测会话的序列化是否正确?
由于
答案 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);
}
}