我有一個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