OVH Cloud OVH Cloud

Problème perte de session (suite)

16 réponses
Avatar
Alain Rogister
Bonjour,=20

apparemment ce probl=E8me est connu chez Microsoft, pour le=20
r=E9soudre, il conseille de passer au mode Out-Process.=20
Seulement, lorsque j'essaye le mode "StateServer" mon=20
application retounre le message d'erreur suivant :

Unable to serialize the session state. Please note that=20
non-serializable objects or MarshalByRef objects are not=20
permitted when session state mode is 'StateServer'=20
or 'SQLServer'.
=20
Description: An unhandled exception occurred during the=20
execution of the current web request. Please review the=20
stack trace for more information about the error and=20
where it originated in the code.=20

Exception Details: System.Web.HttpException: Unable to=20
serialize the session state. Please note that non-
serializable objects or MarshalByRef objects are not=20
permitted when session state mode is 'StateServer'=20
or 'SQLServer'.

Quelqu'un peut-il me dire ce que je dois faire ?

Merci

Alain

10 réponses

1 2
Avatar
Patrice
Dans le cas de SQL Server et StateServer, il faut que l'objet soit
"sérialisable" (en gros transformé en une suite d'octets) pour pouvoir être
stocké puis restauré à l'identique.

Il faudrait donc implanter la sérialisation sur les objets qui ne le
supportent pas encore...

Voir par exemple :
http://msdn.microsoft.com/library/fre/default.asp?url=/library/fre/cpguide/html/cpconserialization.asp

Lorsque les sessions sont sur le serveur IIS, le prolbème ne se pose pas,
l'objet restant présent en mémoire et n'étant pas "transporté"...

Patrice

--

"Alain Rogister" a écrit dans le
message de news:5c7701c48a9d$fe731530$
Bonjour,

apparemment ce problème est connu chez Microsoft, pour le
résoudre, il conseille de passer au mode Out-Process.
Seulement, lorsque j'essaye le mode "StateServer" mon
application retounre le message d'erreur suivant :

Unable to serialize the session state. Please note that
non-serializable objects or MarshalByRef objects are not
permitted when session state mode is 'StateServer'
or 'SQLServer'.

Description: An unhandled exception occurred during the
execution of the current web request. Please review the
stack trace for more information about the error and
where it originated in the code.

Exception Details: System.Web.HttpException: Unable to
serialize the session state. Please note that non-
serializable objects or MarshalByRef objects are not
permitted when session state mode is 'StateServer'
or 'SQLServer'.

Quelqu'un peut-il me dire ce que je dois faire ?

Merci

Alain
Avatar
Alain Rogister
En gros,

que dois-je faire exactement ?

car, cela se passe à la première page de mon application
qui ne contient aucun objet particulier !

Simplement un Objet dérivé de la classe Page. Je ne peux
pas savoir ce qui doit être "sérialisé" ?



-----Message d'origine-----
Dans le cas de SQL Server et StateServer, il faut que


l'objet soit
"sérialisable" (en gros transformé en une suite


d'octets) pour pouvoir être
stocké puis restauré à l'identique.

Il faudrait donc implanter la sérialisation sur les


objets qui ne le
supportent pas encore...

Voir par exemple :
http://msdn.microsoft.com/library/fre/default.asp?


url=/library/fre/cpguide/html/cpconserialization.asp

Lorsque les sessions sont sur le serveur IIS, le


prolbème ne se pose pas,
l'objet restant présent en mémoire et n'étant


pas "transporté"...

Patrice

--

"Alain Rogister" a


écrit dans le
message de news:5c7701c48a9d$fe731530$
Bonjour,

apparemment ce problème est connu chez Microsoft, pour le
résoudre, il conseille de passer au mode Out-Process.
Seulement, lorsque j'essaye le mode "StateServer" mon
application retounre le message d'erreur suivant :

Unable to serialize the session state. Please note that
non-serializable objects or MarshalByRef objects are not
permitted when session state mode is 'StateServer'
or 'SQLServer'.

Description: An unhandled exception occurred during the
execution of the current web request. Please review the
stack trace for more information about the error and
where it originated in the code.

Exception Details: System.Web.HttpException: Unable to
serialize the session state. Please note that non-
serializable objects or MarshalByRef objects are not
permitted when session state mode is 'StateServer'
or 'SQLServer'.

Quelqu'un peut-il me dire ce que je dois faire ?

Merci

Alain


.



Avatar
Patrice
Je verrais :

1) As tu vraiment besoin de SQL Server ou Server State comme fournisseur de
stockage des variables de sessions ? Si non, passe en in-process et tu
n'aura pas ce problème.

2) Dans le cas contraire, toutes les variables de session doivent être
sérialisables.

L'objet dont tu parles est-il stocké en variable de session ? Est-ce
nécessaire ? (les pages sont normalement sérialisées grâce à un champ caché
nommé "ViewState" qui se trouve dans le formulaire HTML généré par la page
ASP.NET).

Ainsi de suite pour les variables suivantes. La sérialisation peut-être
activée en marquant la classe avec l'attribut correspondant :
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpref/html/frlrfSystemSerializableAttributeClassTopic.asp
(à priori l'attribut n'est pas hérité).

Patrice



--

"Alain Rogister" a écrit dans le
message de news:5d0c01c48aa5$2426dc60$
En gros,

que dois-je faire exactement ?

car, cela se passe à la première page de mon application
qui ne contient aucun objet particulier !

Simplement un Objet dérivé de la classe Page. Je ne peux
pas savoir ce qui doit être "sérialisé" ?



-----Message d'origine-----
Dans le cas de SQL Server et StateServer, il faut que


l'objet soit
"sérialisable" (en gros transformé en une suite


d'octets) pour pouvoir être
stocké puis restauré à l'identique.

Il faudrait donc implanter la sérialisation sur les


objets qui ne le
supportent pas encore...

Voir par exemple :
http://msdn.microsoft.com/library/fre/default.asp?


url=/library/fre/cpguide/html/cpconserialization.asp

Lorsque les sessions sont sur le serveur IIS, le


prolbème ne se pose pas,
l'objet restant présent en mémoire et n'étant


pas "transporté"...

Patrice

--

"Alain Rogister" a


écrit dans le
message de news:5c7701c48a9d$fe731530$
Bonjour,

apparemment ce problème est connu chez Microsoft, pour le
résoudre, il conseille de passer au mode Out-Process.
Seulement, lorsque j'essaye le mode "StateServer" mon
application retounre le message d'erreur suivant :

Unable to serialize the session state. Please note that
non-serializable objects or MarshalByRef objects are not
permitted when session state mode is 'StateServer'
or 'SQLServer'.

Description: An unhandled exception occurred during the
execution of the current web request. Please review the
stack trace for more information about the error and
where it originated in the code.

Exception Details: System.Web.HttpException: Unable to
serialize the session state. Please note that non-
serializable objects or MarshalByRef objects are not
permitted when session state mode is 'StateServer'
or 'SQLServer'.

Quelqu'un peut-il me dire ce que je dois faire ?

Merci

Alain


.



Avatar
Norm
Tu ne stockes rien en session au démarrage de ton application?

Il faut regarder chaque objet qui est placer en session.

Tu peux nous en faire une liste?



"Alain Rogister" a écrit dans le
message de news:5d0c01c48aa5$2426dc60$
En gros,

que dois-je faire exactement ?

car, cela se passe à la première page de mon application
qui ne contient aucun objet particulier !

Simplement un Objet dérivé de la classe Page. Je ne peux
pas savoir ce qui doit être "sérialisé" ?



-----Message d'origine-----
Dans le cas de SQL Server et StateServer, il faut que


l'objet soit
"sérialisable" (en gros transformé en une suite


d'octets) pour pouvoir être
stocké puis restauré à l'identique.

Il faudrait donc implanter la sérialisation sur les


objets qui ne le
supportent pas encore...

Voir par exemple :
http://msdn.microsoft.com/library/fre/default.asp?


url=/library/fre/cpguide/html/cpconserialization.asp

Lorsque les sessions sont sur le serveur IIS, le


prolbème ne se pose pas,
l'objet restant présent en mémoire et n'étant


pas "transporté"...

Patrice

--

"Alain Rogister" a


écrit dans le
message de news:5c7701c48a9d$fe731530$
Bonjour,

apparemment ce problème est connu chez Microsoft, pour le
résoudre, il conseille de passer au mode Out-Process.
Seulement, lorsque j'essaye le mode "StateServer" mon
application retounre le message d'erreur suivant :

Unable to serialize the session state. Please note that
non-serializable objects or MarshalByRef objects are not
permitted when session state mode is 'StateServer'
or 'SQLServer'.

Description: An unhandled exception occurred during the
execution of the current web request. Please review the
stack trace for more information about the error and
where it originated in the code.

Exception Details: System.Web.HttpException: Unable to
serialize the session state. Please note that non-
serializable objects or MarshalByRef objects are not
permitted when session state mode is 'StateServer'
or 'SQLServer'.

Quelqu'un peut-il me dire ce que je dois faire ?

Merci

Alain


.



Avatar
Alain Rogister
1) Non, mais vu que j'ai des pertes de session qui sont
aléatoire, il faut bien trouver une solution. Microsoft
connait ce problème et propose de passer en Out-Process.
C'est pour ça que j'essaye le Server State.

2) Mes variables de session sont dans des classes
répertoriées par application. Chaque classe contient un
certain nombre de variable. Mais ces variables sont tout
à fait standard (integer, string, boolean, ...)

Ci-dessous, un exemple de class que je mets en session :

Public Class ClassEmail

Public intEnvoieReponse As Integer
Public intIDMessage As Integer

End Class

-----Message d'origine-----
Je verrais :

1) As tu vraiment besoin de SQL Server ou Server State


comme fournisseur de
stockage des variables de sessions ? Si non, passe en in-


process et tu
n'aura pas ce problème.

2) Dans le cas contraire, toutes les variables de


session doivent être
sérialisables.

L'objet dont tu parles est-il stocké en variable de


session ? Est-ce
nécessaire ? (les pages sont normalement sérialisées


grâce à un champ caché
nommé "ViewState" qui se trouve dans le formulaire HTML


généré par la page
ASP.NET).

Ainsi de suite pour les variables suivantes. La


sérialisation peut-être
activée en marquant la classe avec l'attribut


correspondant :
http://msdn.microsoft.com/library/fre/default.asp?


url=/library/FRE/cpref/html/frlrfSystemSerializableAttribu
teClassTopic.asp
(à priori l'attribut n'est pas hérité).

Patrice



--

"Alain Rogister" a


écrit dans le
message de news:5d0c01c48aa5$2426dc60$
En gros,

que dois-je faire exactement ?

car, cela se passe à la première page de mon application
qui ne contient aucun objet particulier !

Simplement un Objet dérivé de la classe Page. Je ne peux
pas savoir ce qui doit être "sérialisé" ?



-----Message d'origine-----
Dans le cas de SQL Server et StateServer, il faut que


l'objet soit
"sérialisable" (en gros transformé en une suite


d'octets) pour pouvoir être
stocké puis restauré à l'identique.

Il faudrait donc implanter la sérialisation sur les


objets qui ne le
supportent pas encore...

Voir par exemple :
http://msdn.microsoft.com/library/fre/default.asp?


url=/library/fre/cpguide/html/cpconserialization.asp

Lorsque les sessions sont sur le serveur IIS, le


prolbème ne se pose pas,
l'objet restant présent en mémoire et n'étant


pas "transporté"...

Patrice

--

"Alain Rogister" a


écrit dans le
message de news:5c7701c48a9d$fe731530




$
Bonjour,

apparemment ce problème est connu chez Microsoft, pour




le
résoudre, il conseille de passer au mode Out-Process.
Seulement, lorsque j'essaye le mode "StateServer" mon
application retounre le message d'erreur suivant :

Unable to serialize the session state. Please note that
non-serializable objects or MarshalByRef objects are not
permitted when session state mode is 'StateServer'
or 'SQLServer'.

Description: An unhandled exception occurred during the
execution of the current web request. Please review the
stack trace for more information about the error and
where it originated in the code.

Exception Details: System.Web.HttpException: Unable to
serialize the session state. Please note that non-
serializable objects or MarshalByRef objects are not
permitted when session state mode is 'StateServer'
or 'SQLServer'.

Quelqu'un peut-il me dire ce que je dois faire ?

Merci

Alain


.





.



Avatar
Norm
1) Même solution choisie par notre équipe


2)Si tu essaies
<Serializable()>Public Class ClassEmail

Public intEnvoieReponse As Integer
Public intIDMessage As Integer

End Class


Aussi, à titre d'information (vaut mieux prévenir) une datarow n'est pas
serializable, mais une datatable ou dataset oui.
Donc, si une de tes classes contient une datarow ou si tu places directement
une datarow en session, il faudra la placer dans une datatable avant.
Avatar
Alain Rogister
J'ai toujours le même problème

voici ce que j'ai dans mon webconfig

<sessionState
mode="StateServer"
stateConnectionString="tcpip7.0.0.1:42424"
cookieless="false"
timeout="240"
/>

C'est bien juste ?


-----Message d'origine-----
1) Même solution choisie par notre équipe


2)Si tu essaies
<Serializable()>Public Class ClassEmail

Public intEnvoieReponse As Integer
Public intIDMessage As Integer

End Class


Aussi, à titre d'information (vaut mieux prévenir) une


datarow n'est pas
serializable, mais une datatable ou dataset oui.
Donc, si une de tes classes contient une datarow ou si


tu places directement
une datarow en session, il faudra la placer dans une


datatable avant.



.



Avatar
Norm
J'ai la meme chose comme web.config

Il faut regarder quel sont tes objets qui sont mis en session au démarrage.
à chaque ligne ou tu mets de quoi en session, mets ca en commentaire et
décommente-les une par une en partant l'application entre chaque, tu verras
quel objet te cause problème.


"Alain Rogister" a écrit dans le
message de news:097e01c48b6d$5f30b420$
J'ai toujours le même problème

voici ce que j'ai dans mon webconfig

<sessionState
mode="StateServer"
stateConnectionString="tcpip7.0.0.1:42424"
cookieless="false"
timeout="240"
/>

C'est bien juste ?


-----Message d'origine-----
1) Même solution choisie par notre équipe


2)Si tu essaies
<Serializable()>Public Class ClassEmail

Public intEnvoieReponse As Integer
Public intIDMessage As Integer

End Class


Aussi, à titre d'information (vaut mieux prévenir) une


datarow n'est pas
serializable, mais une datatable ou dataset oui.
Donc, si une de tes classes contient une datarow ou si


tu places directement
une datarow en session, il faudra la placer dans une


datatable avant.



.



Avatar
sebastien981_nospam
Bonjour,

désolé de m'immiscer mais une petite précision le problème de
sérialisation peut concerner une classe de base en effet il ne faut pas
que vos classe hérite d'un pour un SessionState il ne faut donc pas que
vos classe dérive de MarshallByRefObject grace à l'explorateur de
classe remontez les hiérarchie et vérifiez que c'est bien le cas si
vous avez un descendant de MarshalByRefObject vous pouvez le marquer
avec l'attribut NonSerialized ainsi il ne sera pas sérialisé cependant
votre session state sera incomplet

En fait le plantage survient sur la première page car c'est au
chargement de cette page que asp.net fait le graphe des objets qui
devront être sérialisés et que donc le problème apparait


Sebastien


Norm a exprimé avec précision :
Tu ne stockes rien en session au démarrage de ton application?

Il faut regarder chaque objet qui est placer en session.

Tu peux nous en faire une liste?



"Alain Rogister" a écrit dans le
message de news:5d0c01c48aa5$2426dc60$
En gros,

que dois-je faire exactement ?

car, cela se passe à la première page de mon application
qui ne contient aucun objet particulier !

Simplement un Objet dérivé de la classe Page. Je ne peux
pas savoir ce qui doit être "sérialisé" ?



-----Message d'origine-----
Dans le cas de SQL Server et StateServer, il faut que l'objet soit
"sérialisable" (en gros transformé en une suite d'octets) pour pouvoir être
stocké puis restauré à l'identique.

Il faudrait donc implanter la sérialisation sur les objets qui ne le
supportent pas encore...

Voir par exemple :
http://msdn.microsoft.com/library/fre/default.asp?
url=/library/fre/cpguide/html/cpconserialization.asp

Lorsque les sessions sont sur le serveur IIS, le prolbème ne se pose pas,
l'objet restant présent en mémoire et n'étant pas "transporté"...

Patrice

--

"Alain Rogister" a écrit dans le
message de news:5c7701c48a9d$fe731530$
Bonjour,

apparemment ce problème est connu chez Microsoft, pour le
résoudre, il conseille de passer au mode Out-Process.
Seulement, lorsque j'essaye le mode "StateServer" mon
application retounre le message d'erreur suivant :

Unable to serialize the session state. Please note that
non-serializable objects or MarshalByRef objects are not
permitted when session state mode is 'StateServer'
or 'SQLServer'.

Description: An unhandled exception occurred during the
execution of the current web request. Please review the
stack trace for more information about the error and
where it originated in the code.

Exception Details: System.Web.HttpException: Unable to
serialize the session state. Please note that non-
serializable objects or MarshalByRef objects are not
permitted when session state mode is 'StateServer'
or 'SQLServer'.

Quelqu'un peut-il me dire ce que je dois faire ?

Merci

Alain


.





--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Avatar
Alain Rogister
J'ai beau regarder dans l'exporateur de classes, je ne
vois pas MarshallByRefObject.

ça m'a l'air compliqué pour faire ça !
-----Message d'origine-----
Bonjour,

désolé de m'immiscer mais une petite précision le


problème de
sérialisation peut concerner une classe de base en effet


il ne faut pas
que vos classe hérite d'un pour un SessionState il ne


faut donc pas que
vos classe dérive de MarshallByRefObject grace à


l'explorateur de
classe remontez les hiérarchie et vérifiez que c'est


bien le cas si
vous avez un descendant de MarshalByRefObject vous


pouvez le marquer
avec l'attribut NonSerialized ainsi il ne sera pas


sérialisé cependant
votre session state sera incomplet

En fait le plantage survient sur la première page car


c'est au
chargement de cette page que asp.net fait le graphe des


objets qui
devront être sérialisés et que donc le problème apparait


Sebastien


Norm a exprimé avec précision :
Tu ne stockes rien en session au démarrage de ton




application?

Il faut regarder chaque objet qui est placer en




session.

Tu peux nous en faire une liste?



"Alain Rogister"




a écrit dans le
message de news:5d0c01c48aa5$2426dc60




$
En gros,

que dois-je faire exactement ?

car, cela se passe à la première page de mon




application
qui ne contient aucun objet particulier !

Simplement un Objet dérivé de la classe Page. Je ne




peux
pas savoir ce qui doit être "sérialisé" ?



-----Message d'origine-----
Dans le cas de SQL Server et StateServer, il faut que






l'objet soit
"sérialisable" (en gros transformé en une suite






d'octets) pour pouvoir être
stocké puis restauré à l'identique.

Il faudrait donc implanter la sérialisation sur les






objets qui ne le
supportent pas encore...

Voir par exemple :
http://msdn.microsoft.com/library/fre/default.asp?
url=/library/fre/cpguide/html/cpconserialization.asp

Lorsque les sessions sont sur le serveur IIS, le






prolbème ne se pose pas,
l'objet restant présent en mémoire et n'étant






pas "transporté"...

Patrice

--

"Alain Rogister"






a écrit dans le
message de news:5c7701c48a9d$fe731530






$
Bonjour,

apparemment ce problème est connu chez Microsoft,






pour le
résoudre, il conseille de passer au mode Out-Process.
Seulement, lorsque j'essaye le mode "StateServer" mon
application retounre le message d'erreur suivant :

Unable to serialize the session state. Please note






that
non-serializable objects or MarshalByRef objects are






not
permitted when session state mode is 'StateServer'
or 'SQLServer'.

Description: An unhandled exception occurred during






the
execution of the current web request. Please review






the
stack trace for more information about the error and
where it originated in the code.

Exception Details: System.Web.HttpException: Unable to
serialize the session state. Please note that non-
serializable objects or MarshalByRef objects are not
permitted when session state mode is 'StateServer'
or 'SQLServer'.

Quelqu'un peut-il me dire ce que je dois faire ?

Merci

Alain


.





--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

.



1 2