2009-12-02 5 views
0

J'ai une application .Net 3x utilisant la sérialisation WCF par défaut et l'application récemment configurée pour utiliser l'état de session SQL Server et je ne peux pas stocker ces objets dans l'état de session avec le serveur sql, uniquement dans proc état de la session.Erreur de sérialisation de l'état de la session SQL Server

erreurs Embarquer différentes classes: indiquant

Impossible de sérialiser l'état de session. En mode 'StateServer' et 'SQLServer', ASP.NET va sérialiser les objets d'état de session, et par conséquent les objets non sérialisables ou les objets MarshalByRef ne sont pas autorisés. La même restriction s'applique si une sérialisation similaire est effectuée par le magasin d'états de session personnalisé en mode "Personnalisé".

J'ai supposé que la sérialisation par défaut de wcf serait suffisante mais apparemment pas. Des idées sur ce qui doit être fait pour corriger ce court de modifier l'application entière et en ajoutant [Serializable] aux classes?

Répondre

1

Il semble que vous avez quatre choix:

  1. Retour au mode InProc
  2. Faites vos objets [Serializable]
  3. Au lieu de stocker des objets de conteneurs de haut niveau dans le dictionnaire de session, utilisez inférieure à la place, les objets sont déjà sérialisables (comme les chaînes, les entiers, etc.)
  4. Évitez d'utiliser l'état de session traditionnel et passez à une autre méthode de gestion d'état à la place

L'option 3 fonctionnera généralement plus vite que 2, même si c'est aussi plus de travail.

Questions connexes