HttpWebRequest non verrà serializzato
-
20-08-2019 - |
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
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:
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.