我刚刚发现了新的CacheControl属性并且它对标准POCO运行良好 - 我想知道是否需要不同的东西来缓存将HttpResult作为PDF返回的服务。 (该服务正在运行,但在调用该服务后,我在缓存中看不到任何记录。)
[Authenticate]
[CacheResponse(Duration = CacheExpirySeconds.TwentyFourHours)]
public class AdvReportPDFService : Service
{
public object Get(AdvRptPitchPercentages request)
{
var ms = SomeFunctionThatReturnsAMemoryStream();
ms.Position = 0;
return new ServiceStack.HttpResult(ms, "application/pdf");
}
}
答案 0 :(得分:2)
ServiceStack的缓存无法在您的服务实现中定义的HttpResult
中缓存元数据(返回缓存响应时)。相反,您应该使用[AddHeader]
请求过滤器属性来指定您的服务返回的自定义ContentType,并返回裸流,例如:
[Authenticate]
[AddHeader(ContentType = "application/pdf")]
[CacheResponse(Duration = CacheExpirySeconds.TwentyFourHours)]
public class AdvReportPDFService : Service
{
public object Get(AdvRptPitchPercentages request)
{
var ms = SomeFunctionThatReturnsAMemoryStream();
return ms;
}
}