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);
最初の応答は期待どおりに返され、応答オブジェクトに変換されます。キャッシュされた 2 番目は余分なスラッシュで返され、その結果、シリアル化できません。
最初の応答:
{"Contents":[{"FileName":"testfile.jpg","Company":0,"Version":0}]}
2 番目の応答:
{\"Contents\":[{\"FileName\":\"testfile.jpg\",\"Company\":0,\"Version\":0}]}
Redis をキャッシュとして使用しています。
スラッシュで保存されているredisサーバーを見てきました。