Sans entrer dans si cela est une bonne ou une mauvaise idée:Les objets Linq à sql sont-ils sérialisables pour l'état de session?
Est-il possible de stocker un LINQ to SQL objet de domaine dans la session ASP.NET, lorsque la session est hors processus ?
[EDIT] Je reçois actuellement l'erreur suivante et posé cette question parce que je pense que les objets LINQ to SQL:
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é". [/ EDIT]
par exemple.
Session["Zoo"] = new Zoo() {
new Lion(),
new Tiger(),
new Elephant()
}
où:
- Zoo, Lion, Tigre, Elephant sortent tous d'un ZooDataContext
et le fichier web.config contient
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
stateNetworkTimeout="10"
sqlConnectionString="SqlStateConnectionString"
sqlCommandTimeout="30"
timeout="20"
regenerateExpiredSessionId="true"/>
Merci de m'avoir donné l'idée.J'avais supposé que si les classes étaient sérialisables, alors elles étaient * serializable *, comme dans le XmlSerializer aurait fonctionné. À la fin, j'ai enveloppé et XmlTextWriter autour d'un MemoryStream, puis utilisé le DataContractSerializer pour sérialiser dans le XmlTextWriter. Après cela, le tampon octet [] du flux de mémoire pourrait être sérialisé et stocké hors processus. Je n'aime vraiment pas ce kludge d'un correctif, mais j'ai été soutenu dans un coin par quelqu'un d'autre conception en s'appuyant sur l'état au lieu d'un motif de "replay". –