2011-01-28 4 views
3

J'essaie de passer des données de session "InProc" à "StateServer". Pour cela, j'ai marqué un tas de classes comme [Serializable] et réécrit certaines classes qui ne pouvaient pas être sérialisées auparavant, et marqué certaines valeurs qui ne devraient pas être sérialisées comme [NonSerialized]. Maintenant, mon problème est qu'au lieu d'obtenir une erreur de compilation, une exception ou toute autre indication d'un problème du framework, je récupère des sessions où certaines des valeurs stockées sont changées en valeurs nulles, soit dans la session elle-même ou à l'intérieur des objets contenus dans la session.Comment puis-je valider que mes données de session ASP.NET peuvent être sérialisées correctement?

Pourquoi n'y a-t-il pas d'indication d'erreur?

Quelle est la cause des valeurs nulles? Comment puis-je détecter que la sérialisation de la session était correcte?

Merci

Répondre

3

On dirait que vous avez besoin de quelques tests unitaires pour confirmer votre sérialisation fonctionne correctement.

[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); 
    } 
} 
Questions connexes