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

6 réponses

1 2
Avatar
sebastien981_nospam
Admettons qu'aucun objet n'hérite de MarshalByRefObject

avez vous penser a mettre l'attribut [nonserializable] (pardon la casse
n'est pas bonne) devant votre sqlconnection ?

parce qu'il se peut aussi que vous soyez tout bêtement entrain
d'essayer de serialiser votre objet sqlconnection ce qui n'est pas très
bon en fait dans chaque classe vous devez définir ce qui est
serializable et ce qui ne l'est pas donc déjà devant toute vos
sqlconnection mettez l'attribut nonserializable

Sebastien


Alain Rogister avait écrit le 26/08/2004 :
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

.





--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Avatar
Alain Rogister
J'ai mis ma connection en session de la manière suivante :

Session("DataBase") = New SqlConnection(strConnection)

Comment faites-vous pour la rendre non-serializable ?


-----Message d'origine-----
Admettons qu'aucun objet n'hérite de MarshalByRefObject

avez vous penser a mettre l'attribut [nonserializable]


(pardon la casse
n'est pas bonne) devant votre sqlconnection ?

parce qu'il se peut aussi que vous soyez tout bêtement


entrain
d'essayer de serialiser votre objet sqlconnection ce qui


n'est pas très
bon en fait dans chaque classe vous devez définir ce qui


est
serializable et ce qui ne l'est pas donc déjà devant


toute vos
sqlconnection mettez l'attribut nonserializable

Sebastien


Alain Rogister avait écrit le 26/08/2004 :
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

.





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

.



Avatar
sebastien981_nospam
Je viens de voir que vous semblez programmer en VB vous m'excuserez si
la syntaxe n'est pas tout à fait exact ça fait 2 ans que je ne
programme plus en VB .net mais en Csharp et parfois je m'embrouille

Je ne sais pas si cela fontionne sur une variable de Session je vous
donne la syntaxe et en dessous je vous la donne d'une autre manière

<NonSerializable>
Session("DataBase")=new sqlconnection(strconnection)


autre
<NonSerializable>
myconnection as new sqlconnection(strconnection)

Session("DataBase")=myconnection

en tout cas l'attribut doit être avant la déclaration donc en très
détaillé

<NonSerializable>
myconnection as sqlconnection

myconnection=new sqlconnection(strconnection)


Voilà je crois que tout y est je vous redis je ne sais pas comment cela
se passe avec les variable de Session je n'ai jamais testé cependant on
peut présumer que ça ne change rien après tout la variable de session
n'est qu'une zone de stockage comme une autre


Pensez à faire de même pour toutes les sqlconnection présente dans
toutes vos classes en fait sur une classe avec par exemple trois champs
on dit au compilateur ce que l'on veut sérialiser ou pas et ensuite on
tri ce qui peut l'être ou pas

d'une manière schématique

<Ouiserialise>
champ1
<non ne serialise pas car hérite de MarshallByrefObject>
champ2
<non ne serialize pas car ne me sert à rien>
champ3


Sebastien

Alain Rogister vient de nous annoncer :
J'ai mis ma connection en session de la manière suivante :

Session("DataBase") = New SqlConnection(strConnection)

Comment faites-vous pour la rendre non-serializable ?


-----Message d'origine-----
Admettons qu'aucun objet n'hérite de MarshalByRefObject

avez vous penser a mettre l'attribut [nonserializable] (pardon la casse
n'est pas bonne) devant votre sqlconnection ?

parce qu'il se peut aussi que vous soyez tout bêtement entrain
d'essayer de serialiser votre objet sqlconnection ce qui n'est pas très
bon en fait dans chaque classe vous devez définir ce qui est
serializable et ce qui ne l'est pas donc déjà devant toute vos
sqlconnection mettez l'attribut nonserializable

Sebastien


Alain Rogister avait écrit le 26/08/2004 :
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

.





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

.





--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Avatar
Alain Rogister
ça fonctionne pas,

on ne peut pas mettre :

<nonserializable> devant une session, mais bien devant
une classe.


-----Message d'origine-----
Je viens de voir que vous semblez programmer en VB vous


m'excuserez si
la syntaxe n'est pas tout à fait exact ça fait 2 ans que


je ne
programme plus en VB .net mais en Csharp et parfois je


m'embrouille

Je ne sais pas si cela fontionne sur une variable de


Session je vous
donne la syntaxe et en dessous je vous la donne d'une


autre manière

<NonSerializable>
Session("DataBase")=new sqlconnection(strconnection)


autre
<NonSerializable>
myconnection as new sqlconnection(strconnection)

Session("DataBase")=myconnection

en tout cas l'attribut doit être avant la déclaration


donc en très
détaillé

<NonSerializable>
myconnection as sqlconnection

myconnection=new sqlconnection(strconnection)


Voilà je crois que tout y est je vous redis je ne sais


pas comment cela
se passe avec les variable de Session je n'ai jamais


testé cependant on
peut présumer que ça ne change rien après tout la


variable de session
n'est qu'une zone de stockage comme une autre


Pensez à faire de même pour toutes les sqlconnection


présente dans
toutes vos classes en fait sur une classe avec par


exemple trois champs
on dit au compilateur ce que l'on veut sérialiser ou pas


et ensuite on
tri ce qui peut l'être ou pas

d'une manière schématique

<Ouiserialise>
champ1
<non ne serialise pas car hérite de MarshallByrefObject>
champ2
<non ne serialize pas car ne me sert à rien>
champ3


Sebastien

Alain Rogister vient de nous annoncer :
J'ai mis ma connection en session de la manière




suivante :

Session("DataBase") = New SqlConnection(strConnection)

Comment faites-vous pour la rendre non-serializable ?


-----Message d'origine-----
Admettons qu'aucun objet n'hérite de






MarshalByRefObject

avez vous penser a mettre l'attribut






[nonserializable] (pardon la casse
n'est pas bonne) devant votre sqlconnection ?

parce qu'il se peut aussi que vous soyez tout






bêtement entrain
d'essayer de serialiser votre objet sqlconnection ce






qui n'est pas très
bon en fait dans chaque classe vous devez définir ce






qui est
serializable et ce qui ne l'est pas donc déjà devant






toute vos
sqlconnection mettez l'attribut nonserializable

Sebastien


Alain Rogister avait écrit le 26/08/2004 :
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

.





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

.





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

.



Avatar
sebastien981_nospam
Ah c'est bien ce que je disais il n'y avais pas de certitude

cela dit il faudra m'expliquer l'interêt de mettre une connection sql
dans une variable de session moi je l'aurais mise dans une espèce de
Classe util en tant que static ou plutot en singleton mais attention je
ne dis pas que ce que je penses est mieu j'ai peut être tord.

Néanmoins pour votre problème ça reste l'une des solution préconisé en
fait cet attribut concerne les champs privé ou public d'une classe que
l'on ne veut pas voir sérialisé (cf doc) c'est pour cela que j'avais
proposé une version étendu

mais là je ne sais pas quoi dire il va falloir que je cherche

Sebastien


Il se trouve que Alain Rogister a formulé :
ça fonctionne pas,

on ne peut pas mettre :

<nonserializable> devant une session, mais bien devant
une classe.


-----Message d'origine-----
Je viens de voir que vous semblez programmer en VB vous m'excuserez si
la syntaxe n'est pas tout à fait exact ça fait 2 ans que je ne
programme plus en VB .net mais en Csharp et parfois je m'embrouille

Je ne sais pas si cela fontionne sur une variable de Session je vous
donne la syntaxe et en dessous je vous la donne d'une autre manière

<NonSerializable>
Session("DataBase")=new sqlconnection(strconnection)


autre
<NonSerializable>
myconnection as new sqlconnection(strconnection)

Session("DataBase")=myconnection

en tout cas l'attribut doit être avant la déclaration donc en très
détaillé

<NonSerializable>
myconnection as sqlconnection

myconnection=new sqlconnection(strconnection)


Voilà je crois que tout y est je vous redis je ne sais pas comment cela
se passe avec les variable de Session je n'ai jamais testé cependant on
peut présumer que ça ne change rien après tout la variable de session
n'est qu'une zone de stockage comme une autre


Pensez à faire de même pour toutes les sqlconnection présente dans
toutes vos classes en fait sur une classe avec par exemple trois champs
on dit au compilateur ce que l'on veut sérialiser ou pas et ensuite on
tri ce qui peut l'être ou pas

d'une manière schématique

<Ouiserialise>
champ1
<non ne serialise pas car hérite de MarshallByrefObject>
champ2
<non ne serialize pas car ne me sert à rien>
champ3


Sebastien

Alain Rogister vient de nous annoncer :
J'ai mis ma connection en session de la manière suivante :

Session("DataBase") = New SqlConnection(strConnection)

Comment faites-vous pour la rendre non-serializable ?


-----Message d'origine-----
Admettons qu'aucun objet n'hérite de MarshalByRefObject

avez vous penser a mettre l'attribut [nonserializable] (pardon la casse
n'est pas bonne) devant votre sqlconnection ?

parce qu'il se peut aussi que vous soyez tout bêtement entrain
d'essayer de serialiser votre objet sqlconnection ce qui n'est pas très
bon en fait dans chaque classe vous devez définir ce qui est
serializable et ce qui ne l'est pas donc déjà devant toute vos
sqlconnection mettez l'attribut nonserializable

Sebastien


Alain Rogister avait écrit le 26/08/2004 :
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

.





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

.





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

.





--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Avatar
Patrice
C'est toujours fortement déconseillé car cela pose des problèmes de montée
en charge.

Dans une certaine mesure je me demande aussi si cela ne peut pas contribuer
au problème original de "perte de session" (quel était l'effet constaté
exactement, la connexion devenait-elle inutilisable, les autres variables
simples était-elle perdues ?).

Patrice

--

"Alain Rogister" a écrit dans le
message de news:06b501c48c03$a07306e0$
J'ai mis ma connection en session de la manière suivante :

Session("DataBase") = New SqlConnection(strConnection)

Comment faites-vous pour la rendre non-serializable ?


-----Message d'origine-----
Admettons qu'aucun objet n'hérite de MarshalByRefObject

avez vous penser a mettre l'attribut [nonserializable]


(pardon la casse
n'est pas bonne) devant votre sqlconnection ?

parce qu'il se peut aussi que vous soyez tout bêtement


entrain
d'essayer de serialiser votre objet sqlconnection ce qui


n'est pas très
bon en fait dans chaque classe vous devez définir ce qui


est
serializable et ce qui ne l'est pas donc déjà devant


toute vos
sqlconnection mettez l'attribut nonserializable

Sebastien


Alain Rogister avait écrit le 26/08/2004 :
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

.





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

.



1 2