gpt4 book ai didi

caching - servicestack - 使用 redis 缓存服务响应

转载 作者:IT王子 更新时间:2023-10-29 06:10:16 26 4
gpt4 key购买 nike

我有一个 servicestack 服务,当通过浏览器(restful)Url ex:http://localhost:1616/myproducts 调用时,它工作正常。服务方法启用了 RedisCaching。所以它第一次访问数据存储库并将其缓存以供后续使用。

我的问题是当我尝试通过 Soap12ServiceClient 从 c# 客户端调用它时。它返回以下错误:

Error in line 1 position 183. Expecting element '<target response>' 
from namespace 'http://schemas.datacontract.org/2004/07/<target namespace>'..
Encountered 'Element' with name 'base64Binary',
namespace 'http://schemas.microsoft.com/2003/10/Serialization/'.

下面是我的客户端代码:

 var endpointURI = "http://mydevelopmentapi.serverhostingservices.com:1616/"; 
using (IServiceClient client = new Soap12ServiceClient(endpointURI))
{
var request = new ProductRequest { Param1 = "xy23432"};
client.Send<ProductResponse>(request);
}

似乎使用的 soapwsdl 出现了问题,但我似乎使用了 servicestack 生成的默认值..

任何帮助将不胜感激。

更新

我可以通过更改服务端的缓存代码来克服这个错误:

客户端返回错误的代码:

return RequestContext.ToOptimizedResultUsingCache(this.CacheClient, cacheKey,
() =>
new ProductResponse(){CreateDate = DateTime.UtcNow,
products = new productRepository().Getproducts(request)
});

现在可用的代码:

var result = this.CacheClient.Get<ProductResponse>(cacheKey);
if (result == null)
{
this.CacheClient.Set<ProductResponse>(cacheKey, productResult);
result = productResult;
}
return result;

但我还是很想知道为什么第一个方法(RequestContext.ToOptimizedResultUsingCache)在c#客户端返回错误?

最佳答案

但我还是很想知道为什么第一个方法 (RequestContext.ToOptimizedResultUsingCache) 在 c# 客户端返回错误?

据我所知,ToOptimizedResultUsingCache 试图根据 RequestContext 的 ResponseContentType 从缓存中提取特定格式(xml、html、json 等) (参见代码 herehere )。使用 Soap12ServiceClient 时,ResponseContentType 是 text/html(不确定这在 ServiceStack 中是否正确/有意)。那么ToOptimizedResultUsingCache从缓存中拉出的是一串html。 html 字符串正在返回到 Soap12ServiceClient 并导致异常。

通过直接从缓存中提取,您将绕过 ToOptimizedResultUsingCache 的“格式检查”并返回 Soap12ServiceClient 可以处理的内容。

** 如果您正在使用 Redis 并使用 UrnId.Create 方法创建您的 key ,您应该会看到类似 urn:ProductResponse:{yourkey}.html 的 key

关于caching - servicestack - 使用 redis 缓存服务响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15564153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com