私は、ブラウザ(安らかな) Url ex: を介して呼び出されたときに servicestack サービスを持っていますが、http://localhost:1616/myproducts
正常に動作します。サービス メソッドで RedisCaching が有効になっています。そのため、最初にデータ リポジトリにヒットし、後で使用できるようにキャッシュします。
私の問題は、Soap12ServiceClient を介して ac# クライアントから呼び出そうとしたときです。以下のエラーを返します。
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# クライアントでエラーを返した理由を知りたいですか?