2012-08-29 14 views
5

Uso ServiceStack.Text con ServiceStack (el marco del servicio web).¿Por qué no se aplican las configuraciones de deserialización personalizada de ServiceStack.Text?

Estoy tratando de agregar una ruta de serialización personalizada para un tipo específico en AppHost.Configure(). Sin embargo, la configuración no se aplica/se ignora.

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);  
    } 
} 

Respuesta

7

ServiceStack.Text almacena en caché internamente muy fuertemente para lograr un rendimiento rápido. ServiceStack ya está iniciando el proceso de creación de caché antes de que se llame al AppHost.Configure().

Para resolver este problema, debe registrar su configuración antes de llamar al AppHost.Init().

Por supuesto, esto no es necesario para todas las configuraciones en ServiceStack.Text: solo es necesario para la configuración que se almacenará en caché antes de llamar al AppHost.Configure().

+0

¿Podría proporcionar la fuente de la información en el primer párrafo? Tengo un problema similar con ServiceStack.Text cache y tu slution no es posible en mi caso. – ygormutti

+1

Gracias ... me estaba tirando de los pelos tratando de descubrir por qué no llamaba a mi deserializador personalizado ... moví la línea configurando JsConfig .DeSerializeFn en el constructor de AppHost en lugar de .Configure() y eso resolvió el problema. –

Cuestiones relacionadas