我构建了一个使用缓存的简单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"})
答案 0 :(得分:1)
我们删除了原始字符串响应in this commit的双重编码。此问题现在应该在现在available on MyGet的ServiceStack的最新 v4.0.33 + 中得到解决。