2013-03-22 126 views
2

我遇到問題,POST後的第二個GET請求根本沒有得到執行,但返回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 2013-03-22 19:15:36

+0

Silverlight是罪魁禍首。 http://stackoverflow.com/questions/3857379/does-silverlight-cache-web-service-calls – epitka 2013-03-22 19:19:57

+2

這裏要說明的是,緩存發生在客戶端的HTTP緩存中,而不是服務器端。 – EricLaw 2013-03-22 20:31:04

1

這可能是由於您的代理,其本地緩存的結果造成的。默認情況下,http get get啓用緩存。在你的http頭文件中指定http緩存。