我有一个servicestack服务,当通过浏览器调用(restful)Url ex:http://localhost:1616/myproducts
,它工作正常。 服务方法启用了RedisCaching。所以第一次命中数据存储库并将其缓存以供后续使用。servicestack - 使用redis缓存服务响应
我的问题是,当我尝试通过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#客户端返回错误?
你返回缓存结果的地方?您的匿名函数内的返回不是服务调用的返回值。 – paaschpa 2013-03-24 03:11:43