2013-03-22 168 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缓存。