2010-08-21 4 views
0

Je reçois une erreur de sérialisation en essayant d'utiliser Session State Server au lieu d'InProd. Cependant, je ne peux pas comprendre ce qui cause l'erreur en session. On m'a donné du code à ajouter à la page pour faire une boucle sur l'objet de session et déterminer si chaque élément de celui-ci est sérialisable. Mon problème est que je ne sais pas où placer le code dans la page ASP.NET. Dans le suivi du code, l'erreur apparaît juste après avoir traversé les objets en dehors de la page et non lors de la définition de la session. Il doit y avoir un endroit où je peux placer le code sur la page qui est après que tous les objets de session sont définis mais avant que la page ne se trompe. Où cela serait-il?Emplacement du code pour les objets Session dans l'application ASP.NET

+0

Obtenez-vous un stacktrace lorsque cela se produit? Cela fournit généralement des informations supplémentaires. –

+0

Je ne peux pas dire à partir de l'exception où la session est définie et je ne peux pas le trouver dans le code. C'est pourquoi j'ai besoin de vérifier l'objet de session. – user31673

Répondre

0

Vous pouvez le mettre en pageload, définir un point d'arrêt, puis parcourir le code de désérialisation jusqu'à ce qu'il affiche - cela vous indiquera quel objet n'est pas encore sérialisable et bloque le transiton pour utiliser SQL pour les sessions. C'est difficile à dire sans le code source qui vous a été donné pour tester pour sérialisable.

Il pourrait être utile de réfléchir à ce que vous essayez de faire ici. Étant donné que SQL State Server requiert que les objets soient Serializable, contrairement à InProc, tout objet que vous avez placé dans Session doit être Serializable. Donc, vous voulez valider que tous les objets que vous stockez dans Session sont sérialisables, ou, comme l'a dit l'autre répondeur, déterminer quel objet n'est pas sérialisable et causer les problèmes. Il est assez facile de test whether an object can be Serialized. Vous pouvez utiliser l'exemple de code que vous avez reçu ou simplement créer un test unitaire (ou tester dans un pageload pour votre application si c'est plus facile) qui teste les différents types que vous stockez dans la session en tant que sérialisables.

+0

pageload est trop tôt dans le processus. L'erreur ne se produit pas au moment de la définition de la session mais une fois que la page est prête à être renvoyée. J'ai juste besoin d'un endroit où toutes les sessions sont définies mais avant que ça ne fasse erreur. – user31673

0

La réponse à cette question consiste à placer le code dans le gestionnaire d'événements SaveStateComplete.

Questions connexes