Domanda

Ricevo il seguente errore quando provo a serializzare un HttpWebRequest

  

Digita "System.Net.KnownHttpVerb" in   Sistema di assemblaggio, versione = 2.0.0.0,   Culture = neutral,   PublicKeyToken = b77a5c561934e089 'è   non contrassegnato come serializzabile.

Uso di .Net Framework 2.0

Questa è una delle proprietà della mia classe. È un requisito per serializzarlo.

HttpWebRequest è contrassegnato come serializzabile, quindi dovrebbe serializzare

È stato utile?

Soluzione

Bene, se uno degli oggetti contenuti è contrassegnato come non serializzabile, credo che tu sia " sfortunato " utilizzando il serializzatore predefinito.

Se possibile, raccomanderei invece di prendere i parametri usati per creare un'istanza della tua richiesta web e serializzare invece quelli. Scrivi un serializzatore / deserializzatore personalizzato per ricostituire l'oggetto non cooperativo.

EDIT: c'è un articolo abbastanza buono su di esso qui .

EDIT2: In effetti, dopo un po 'di ricerche su Google, sembra che questa sia l'unica opzione, poiché l'attributo serializzabile su HttpWebRequest è stato contrassegnato come obsoleto a partire da .net 2.0. Vedi qui per i dettagli (cerca HttpWebRequest).

Altri suggerimenti

La serializzazione System.Net.HttpWebRequest è stata contrassegnata come obsoleta in .NET 2.0.

Documenti ufficiali qui:

  

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

Dal punto di vista dell'app, questo è il risultato migliore. La maggior parte predominante di un'istanza di HttpWebRequest è lo stato IO che in genere non è direttamente reidratabile.

Come suggerisce @ Andrew-Rollings invece implementare una serializzazione personalizzata per archiviare / ripristinare i parametri della richiesta, quindi ricreare da zero l'istanza HttpWebRequest.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top