Как я могу проверить, что мои данные сеанса ASP.NET могут быть правильно сериализованы? - PullRequest
3 голосов
/ 28 января 2011

Я пытаюсь перейти от сохранения данных сеанса "InProc" к "StateServer".

Для этого я пометил группу классов как [Serializable] и переписал некоторые классы, которые не могли быть сериализованы ранее, и отметил некоторые значения, которые не следует сериализовать как [NonSerialized].

Теперь моя проблема заключается в том, что вместо получения ошибки времени компиляции, исключения или любого другого указания на проблему из инфраструктуры, я получаю сеансы обратно, где некоторые из сохраненных значений заменяются на нулевые значения, либо в сам сеанс или внутри объектов, содержащихся в сеансе.

Почему нет указания на ошибку?

Что вызывает нулевые значения?

Как я могу определить правильность сериализации сеанса?

Спасибо

1 Ответ

3 голосов
/ 28 января 2011

Похоже, вам нужны тесты для проверки правильности сериализации.

[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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...