Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why do ServiceStack.Text custom deserialization settings not apply?

I use ServiceStack.Text with ServiceStack (the web service framework).

I'm trying to add a custom serialization route for a specific type in AppHost.Configure(). However, the settings do not apply/are ignored.

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);    
    }
}
like image 697
Arxisos Avatar asked Aug 29 '12 17:08

Arxisos


1 Answers

ServiceStack.Text is caching internally very heavily to achieve fast performance. ServiceStack is already starting the cache creation process before AppHost.Configure() is called.

So to resolve this issue, you need to register your settings before AppHost.Init() is called.

Of course this isn't required for all settings in ServiceStack.Text - it's only required for the settings which will be cached before AppHost.Configure() is called.

like image 157
Arxisos Avatar answered Oct 19 '22 03:10

Arxisos