服务返回字符串仅在来自缓存时添加了引号

时间:2014-10-23 19:38:38

标签: caching servicestack

我构建了一个使用缓存的简单Hello服务。 DTO:

[DataContract]
[Route("/cachedhello/{Name}")]
public class CachedHello : IReturn<string>
{
   [DataMember]
   public string Name { get; set; }

   public string CacheKey
   { get { return "urn:cachedhello:nm=" + Name; } }
}

这是服务:

 public class CachedHelloService : Service
    {
        public ICacheClient CacheClient { get; set; }

        public object Any(CachedHello request)
        {
            return base.Request.ToOptimizedResultUsingCache(
                 this.CacheClient, request.CacheKey, CacheExpiryTime.DailyLoad(), () =>
                 {
                     return "(Cached) Hello, " + request.Name;
                 });
        }
    }

当我使用JSONServiceClient调用此服务时,返回的字符串周围有引号。当我查看数据库中的缓存条目时,它看起来像是在条目的.json版本周围添加了一组额外的引号:

urn:cachedhello:nm=Matt                    (Cached) Hello, Matt
urn:cachedhello:nm=Matt.json               """(Cached) Hello, Matt"""
urn:cachedhello:nm=Matt.json.deflate       U9JwTkzOSE3RVPBIzcnJ11HwTSwpUQIA

这是从VB.NET调用服务的代码

Dim s = _ServiceClient.Send(Of String)(New CachedHello() With {.Name = "Matt"})

1 个答案:

答案 0 :(得分:1)

我们删除了原始字符串响应in this commit的双重编码。此问题现在应该在现在available on MyGet的ServiceStack的最新 v4.0.33 + 中得到解决。