Ich versuche, ein FormCollection-Objekt zu serialisieren, und basierend auf dem, was ich erforscht habe, erbt es NameObjectCollectionBase, so dass es auch GetObjectData und ISerializable erbt. Wäre das nicht serialisierbar?Wie Serialisieren und Deserialisieren von FormCollection?
https://msdn.microsoft.com/en-us/library/system.web.mvc.formcollection(v=vs.118).aspx
Hier ein Ausschnitt von dem, was ich versuche:
BinaryFormatter formatter = new BinaryFormatter();
//Serialize
using (MemoryStream stream = new MemoryStream())
{
formatter.Serialize(stream, data);
string test = Convert.ToBase64String(stream.ToArray());
Session["test"] = test;
};
//Deserialize
using (MemoryStream stream = new MemoryStream(Convert.FromBase64String((string)Session["test"])))
{
data = (FormCollection) formatter.Deserialize(stream);
}
ich leider diesen Fehler bekam:
System.Runtime.Serialization.SerializationException: Type 'System.Web.Mvc.FormCollection' in Assembly 'System.Web.Mvc, Version=5.2.3.0, Culture=neutral... is not marked as serializable.
Da dies eine versiegelte Klasse ist, kann ich nicht erweitern Sie es und fügen Sie das Attribut [Serializable] hinzu.
Meine Fragen sind:
Warum kann ich Formcollection wie dies nicht serialisiert werden?
Und wie kann ich ein FormCollection-Objekt serialisieren/deserialisieren?
Danke, das eine Menge Dinge aufgeklärt! Kannst du dir von deinem Kopf irgendwelche Probleme vorstellen, die BinaryFormatter in diesem Beispiel haben könnte? – WCGPR0
Wenn Sie serialisierte Daten nirgends weitergeben werden, ist es in Ordnung, BinaryFormatter zu verwenden. Beachten Sie jedoch, dass die Formularsammlung theoretisch Objekte enthalten kann, die nicht serialisierbar sind (obwohl dies ungewöhnlich ist). – Evk