HttpWebRequest ne sera pas sérialisé
-
20-08-2019 - |
Question
Je reçois le message d'erreur suivant lorsque je tente de sérialiser une requête HttpWebRequest
Tapez 'System.Net.KnownHttpVerb' dans Système d'assemblage, version = 2.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089 'est non marqué comme sérialisable.
Utilisation de .Net Framework 2.0
Il s’agit d’une des propriétés de ma classe. Il est obligatoire de le sérialiser.
HttpWebRequest est marqué en tant que Serializable afin qu'il soit supposé Serialize
La solution
Eh bien, si l'un des objets contenus est marqué comme non sérialisable, je pense que vous êtes & "pas de chance &"; en utilisant le sérialiseur par défaut.
Si possible, je vous recommanderais de prendre les paramètres utilisés pour instancier votre requête Web et de les sérialiser à la place. Ecrivez un sérialiseur / désérialiseur personnalisé pour reconstituer l'objet non coopératif.
EDIT: il contient un assez bon article ici .
EDIT2: En fait, après quelques recherches sur Google, il semble que ce soit votre seule option, car l'attribut Serializable sur HttpWebRequest a été marqué comme obsolète à partir de .net 2.0. Voir ici pour plus de détails (recherchez HttpWebRequest).
Autres conseils
La sérialisation System.Net.HttpWebRequest a été marquée comme obsolète dans .NET 2.0.
Documents officiels ici:
Du point de vue de l'application, c'est le meilleur résultat. La majeure partie d'une instance HttpWebRequest est un état IO qui n'est généralement pas directement réhydratable.
Comme @ Andrew-Rollings suggère d'implémenter une sérialisation personnalisée pour stocker / restaurer vos paramètres de requête, puis recréez l'instance HttpWebRequest à partir de zéro.