Domanda

. Problema: quando la memorizzazione nella cache un'istanza di una classe e subito ottenerlo indietro di cache, ottengo la parte posteriore dell'oggetto (la sua non nullo), ma tutte le sue proprietà / campi sono nulli o valori di default

    _cacheHelper.PutInCache("testModuleControlInfoOne", mci);
    //mci has populated fields

    var mciFromCacheOne = _cacheHelper.GetFromCache("testModuleControlInfoOne");
    //mciFromCacheOne now has null or default fields

Così ho il sospetto che il modo in cui l'oggetto è strutturato è il problema e AppFabric non è serializzazione l'oggetto correttamente per qualche motivo.

Quando uso il seguente metodo di serializzazione però, ho la schiena oggetto con tutte le proprietà / campi come lo erano prima di serializzazione.

    public T SerializeThenDeserialize<T>(T o) where T : class
    {
            BinaryFormatter bf = new BinaryFormatter();

            using (MemoryStream ms = new MemoryStream())
            {
                bf.Serialize(ms, o);

                ms.Position = 0;

                return (T)bf.Deserialize(ms);
            }
    }

Come può un oggetto serializzare e deserializzare correttamente utilizzando il formattatore binario e non fare esattamente la stessa cosa tramite la cache?

Qualcuno ha incontrato questo o qualcuno ha suggerimenti o consigli su come in generale quello di guardare fuori per?

È stato utile?

Soluzione

Ok trovato.

L'oggetto implementato IXmlSerializable modo AppFabric usato che invece di serializzazione regolare.

L'esecuzione attraverso un XmlSerializer (invece di un BinaryFormatter) dà gli stessi campi nulli come stavo vivendo.

Sembra l'attuazione IXmlSerializable ha problemi.

Altri suggerimenti

Credo che durante la serializzazione in XML (utilizzando IXmlSerializable), i campi privati ??di un oggetto vengono ignorate, che può essere il motivo per cui l'oggetto era incompleta sul recupero.

Utilizzando binario serializzazione assicurerà l'intero oggetto (compresi i riferimenti ad altri oggetti) sono inclusi.

Si consiglia di guardare IDataCacheObjectSerializer

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

AppFabric Caching - Posso specificare la serializzazione stile utilizzato per tutti gli oggetti?

(sì mi rendo conto che questa domanda è stato anche il vostro: -)

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