1
브라우저를 통해 호출 할 때 편안함을 제공하는 서비스 서비스가 있습니다 (예 : 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# 클라이언트에서 오류를 반환 한 이유를 알고 싶습니다.