2013-03-22 6 views
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# 클라이언트에서 오류를 반환 한 이유를 알고 싶습니다.

답변