Kann der Sitzungsstatus wegen Microsoft.Web.Services3.StateManager nicht serialisiert werden?

8

Es gibt viele Fragen, die dem ähnlich sind ... aber ich sehe nicht, wie sie dieses spezifische Problem haben:

Ich habe einen Webservice, der einen Fehler zurückgibt, der mit:

beginnt
  

Der Sitzungsstatus konnte nicht serialisiert werden. In 'StateServer' und   Im 'SQLServer' Modus wird ASP.NET die Sitzungsstatusobjekte serialisieren,   und als Ergebnis sind nicht serialisierbare Objekte oder MarshalByRef-Objekte   nicht gestattet. Die gleiche Einschränkung gilt für ähnliche Serialisierung   wird vom benutzerdefinierten Sitzungszustandsspeicher im Modus 'Benutzerdefiniert' ausgeführt.

Also, Fragen wie diese Erwähnung, nach SerializationException zu suchen, herauszufinden, was nicht serialisiert werden kann, und es serialisierbar zu machen. Hört sich einfach an ... aber wenn ich danach suche, finde ich das:

  

[SerializationException: Geben Sie 'Microsoft.Web.Services3.StateManager' ein   in Assembly 'Microsoft.Web.Services3, Version = 3.0.0.0,   Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'ist nicht als markiert   serialisierbar.]

Das verwirrt mich ... es klingt, als ob es tatsächlich versucht, den StateManager zu serialisieren ... ist es nur, dass es versteckt, dass etwas anderes darin ist, dass der StateManager nicht serialisiert werden kann? Wenn ja, gibt es eine Möglichkeit, was herauszufinden? Oder soll der StateManager eigentlich aus irgendeinem Grund serialisierbar sein? (Ich vermute, ich sage das nicht sehr deutlich ... Entschuldigung ... wenn Sie Fragen haben, werde ich mein Bestes tun, um sie zu beantworten.)

Eine Sache, die ich auch beachten sollte, ist, dass wir NCache als einen Sitzungsspeicher-Anbieter verwenden, der so aussieht, als könnte er in irgendeiner Weise verwandt sein. Aber mir ist nicht klar, wie das dazu führen könnte, was ich sehe.

    
Beska 02.08.2012, 21:44
quelle

1 Antwort

1

Wenn Sie ein benutzerdefiniertes Objekt serialisieren, achten Sie darauf, die Klasse mit dem Attribut zu dekorieren. Ohne dies bei einem Objekt, das Sie in den Sitzungsstatus versetzen, wird der Serializer fehlschlagen. Sie müssen wahrscheinlich das Objekt, das Sie speichern, isolieren und seine Eigenschaften überprüfen und dass es selbst dieses Attribut besitzt.

    
Middletone 07.10.2012 13:57
quelle