2012-08-29 13 views
5

Uso ServiceStack.Text con ServiceStack (il framework dei servizi Web).Perché le impostazioni di deserializzazione personalizzate di ServiceStack.Text non si applicano?

Sto tentando di aggiungere un percorso di serializzazione personalizzato per un tipo specifico in AppHost.Configure(). Tuttavia, le impostazioni non si applicano/vengono ignorate.

public AppHost : AppHostBase 
{ 
    ... 

    public override void Configure(Container container) 
    { 
     //Register custom serialization routine 
     ServiceStack.Text.JsConfig<CultureInfo>.SerializeFn = r => r.TwoLetterISOLanguageName; 
     ServiceStack.Text.JsConfig<CultureInfo>.DeSerializeFn = r => return new CultureInfo(r);  
    } 
} 

risposta

7

ServiceStack.Text esegue molto il caching internamente molto pesantemente per ottenere prestazioni veloci. ServiceStack sta già avviando il processo di creazione della cache prima della chiamata a AppHost.Configure().

Quindi per risolvere questo problema, è necessario registrare le impostazioni prima che venga chiamato AppHost.Init().

Ovviamente questo non è richiesto per tutte le impostazioni in ServiceStack.Text - è richiesto solo per le impostazioni che verranno memorizzate nella cache prima che venga chiamato AppHost.Configure().

+0

Potrebbe fornire la fonte per le informazioni nel primo paragrafo? Ho un problema simile con la cache di ServiceStack.Text e la tua slution non è possibile nel mio caso. – ygormutti

+1

Grazie ... mi stavo strappando i capelli cercando di capire perché non stava chiamando il mio deserializzatore personalizzato ... ho spostato la linea impostando JsConfig .DeSerializeFn nel costruttore AppHost invece di .Configure() e questo ha risolto il problema. –

Problemi correlati