2013-03-22 2 views
2

Я столкнулся с проблемой, что мой второй запрос GET после POST не выполняется вообще, но возвращает результаты до POST. Я не вижу, чтобы запрос был выпущен в скрипаче вообще. Если я перезапущу приложение, он вернет правильные результаты. У меня нет кэширования. Маршруты настроены так:ServiceStack: Получены ли результаты GET по умолчанию?

container.RegisterAutoWired<ComplianceService>().ReusedWithin(ReuseScope.Request); 

Routes.Add<CertificateDefinitionList>("/certificates","GET"); 
Routes.Add<CertificateDefinition>("/certificates/{CertificateDefinitionId}", "GET"); 
Routes.Add<CertificateDefinitionSave>("/certificates","POST"); 

ответ

1

Там нет неявного Кэширования в ServiceStack. Если вы хотите кэшировать ответы вы должны явно запросить его как seen on the Caching wiki:

public object Get(CachedOrders request) 
{ 
    var cacheKey = "unique_key_for_this_request"; 
    return RequestContext.ToOptimizedResultUsingCache(base.Cache,cacheKey,() => 
     { 
      //Delegate is executed if item doesn't exist in cache 
      //Any response DTO returned here will be cached automatically 
     }); 
} 
+0

Затем происходит что-то еще, поскольку все запросы GET кэшируются. Это приложение Silverlight. – epitka

+0

Silverlight - преступник. http://stackoverflow.com/questions/3857379/does-silverlight-cache-web-service-calls – epitka

+2

Чтобы быть понятным здесь, кеширование происходит в кеш-клиенте клиента, а не на стороне сервера. – EricLaw

1

Это, вероятно, вызвано прокси-сервера, который кэширует результаты локально. Кэширование включено по http get по умолчанию. Укажите http-кеширование в заголовках http.

Смежные вопросы