2012-08-29 16 views
5

Tôi sử dụng ServiceStack.Text với ServiceStack (khung dịch vụ web).Tại sao cài đặt ServiceStack.Text tùy chỉnh deserialization không áp dụng?

Tôi đang cố gắng thêm tuyến đường tuần tự hóa tùy chỉnh cho một loại cụ thể trong AppHost.Configure(). Tuy nhiên, các cài đặt không áp dụng/bị bỏ qua.

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

Trả lời

7

ServiceStack.Text đang lưu trong bộ nhớ cache rất nhiều để đạt được hiệu suất nhanh. ServiceStack đã bắt đầu quá trình tạo bộ nhớ cache trước khi gọi AppHost.Configure().

Vì vậy, để giải quyết vấn đề này, bạn cần đăng ký cài đặt trước khi gọi AppHost.Init().

Tất nhiên điều này không bắt buộc đối với tất cả các cài đặt trong ServiceStack.Text - chỉ cần thiết cho cài đặt được lưu trong bộ nhớ cache trước khi gọi AppHost.Configure().

+0

Bạn có thể vui lòng cung cấp nguồn thông tin trong đoạn đầu tiên không? Tôi có một vấn đề tương tự với bộ nhớ cache ServiceStack.Text và slution của bạn là không thể trong trường hợp của tôi. – ygormutti

+1

Cảm ơn ... đã kéo tóc của tôi ra cố gắng tìm ra lý do tại sao nó không được gọi là deserializer tùy chỉnh của tôi ... di chuyển các thiết lập dòng JsConfig .DeSerializeFn vào AppHost constructor thay vì .Configure() và giải quyết vấn đề. –

Các vấn đề liên quan