我使用 ServiceStack 创建了一个缓存的 web 服务。
public class ContentSearchService : ServiceBase<ContentSearch>
{
public ICacheClient CacheClient { get; set; }
protected override object Run(ContentSearch request)
{
var cacheKey = "unique_key_for_this_request2";
return base.RequestContext.ToOptimizedResultUsingCache(this.CacheClient, cacheKey, () =>
{
//Delegate is executed if item doesn't exist in cache
//Any response DTO returned here will be cached automatically
return new ContentSearchResponse()
{
Contents = new List<ContentData>()
{
new ContentData()
{
FileName = "testfile.jpg"
}
}
};
});
}
}
然后使用以下命令运行:
IRestClient client = new JsonServiceClient("http://internal");
ContentSearch search = new ContentSearch();
ContentSearchResponse response = client.Put<ContentSearchResponse>("/json/syncreply/ContentSearch", search);
第一个响应按预期返回并转换为响应对象。第二个缓存的返回带有额外的斜杠,因此无法序列化。
第一反应:
{"Contents":[{"FileName":"testfile.jpg","Company":0,"Version":0}]}
第二个回应:
{\"Contents\":[{\"FileName\":\"testfile.jpg\",\"Company\":0,\"Version\":0}]}
我使用 Redis 作为缓存。
我已经查看了它们与斜杠一起存储的 redis 服务器。