2008-12-08 6 views
2

Je reçois l'erreur suivante lorsque je tente de sérialiser un HttpWebRequestHttpWebRequest Ne Sérialisez

Type 'System.Net.KnownHttpVerb' dans système » Assemblée, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 'est non marqué comme sérialisable.

En utilisant .Net Framework 2.0

C'est une des propriétés qui détient ma classe. C'est une obligation de le sérialiser.

HttpWebRequest est marqué comme sérialisable il censé Sérialisez

Répondre

3

Eh bien, si l'un des objets contenus est marqué comme non sérialisable, je crois que vous êtes « pas de chance » en utilisant le sérialiseur par défaut.

Si possible, je recommande de prendre à la place les paramètres utilisés pour instancier votre requête Web et les sérialiser à la place. Ecrivez un sérialiseur/désérialiseur personnalisé pour reconstituer l'objet non coopératif.

EDIT: Il y a un assez bon article dessus here.

EDIT2: En fait, après un peu de googling, il semble que ce soit votre seule option, car l'attribut Serializable sur HttpWebRequest a été marqué obsolète à partir de .net 2.0. Voir here pour les détails (recherche de HttpWebRequest).

+0

HttpWebRequest est marqué comme Serializable, donc il est supposé Sérialiser –

+0

Qu'est-ce que SOL? J'utilise binaryformatter pour sérialiser. –

+0

Eh bien, la classe HttpWebRequest contient apparemment un System.Net.KnownHttpVerb qui n'est * pas * sérialisable. C'est ce qui cause le problème. Et j'éditerai SOL pour le rendre plus clair. –

0

La sérialisation System.Net.HttpWebRequest a été marquée comme obsolète dans .NET 2.0.

Documents officiels ici:

http://msdn.microsoft.com/en-us/library/aa497288.aspx

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, recréer l'instance HttpWebRequest à partir de rien.