2014-09-15 2 views
1

WCF 서비스를 웹 서비스 클라이언트로 수행 할 수 있습니까?WCF REST 서비스를 클라이언트로 구성 하시겠습니까?

가능하다면 구성 파일에서 클라이언트 설정을 구성하는 방법에 대한 지침을 제공 할 수 있습니까?

내가 겪고있는 주요 문제는 내 주요 REST 서비스에 큰 메시지를 보내고 있다는 것입니다. 해당 메시지가 보조 서비스로 릴레이되면 응답으로 "MaxReceivedMessage"너무 큰 오류가 발생합니다. 내 REST 서비스에 대한 CLIENT 설정을 구성하려했지만 성공하지 못했습니다.

app.config 또는 web.config에서 어떤 구성을 정의합니까?

바인딩이 무시되는 CLIENT 설정을 선언 한 위치에 상관없이 내가 잘못하고있는 것처럼 보입니다.

다음은 REST 서비스에 대한 내 APPLICATION 구성입니다. 실패 MY REST 서비스 엔드 포인트 METHOD HERE

<?xml version="1.0"?> 
<configuration> 
    <system.serviceModel> 
     <bindings> 
      <basicHttpBinding> 
       <binding name="BasicHttpBinding_IBBIImageWarpService" /> 
      </basicHttpBinding> 
     </bindings> 
     <client> 
      <endpoint address="http://localhost:8080/BBIImageWarp" binding="basicHttpBinding" 
       bindingConfiguration="BasicHttpBinding_IBBIImageWarpService" 
       contract="ServiceReference1.IBBIImageWarpService" name="BasicHttpBinding_IBBIImageWarpService" /> 
     </client> 
    </system.serviceModel> 
</configuration> 

된다

 public ServiceResponse<DataContracts.BBIImgObject> WarpImage(DataContracts.BBIImgObject imgObject) 
     { 
      try 
      { 

       writeMessage("converting to JSON"); 

       string JSON = new JavaScriptSerializer().Serialize(imgObject); 

       BasicHttpBinding binding = new BasicHttpBinding(); 

난 THIS 결합하는 MAXRECEIVEDMessageSize 추가해야 //는 ???

   EndpointAddress address = new EndpointAddress("http://localhost:8080/BBIImageWarp"); 

       ServiceReference1.BBIImageWarpServiceClient ImgWarpSvc = new ServiceReference1.BBIImageWarpServiceClient(binding, address); 

       string rslt = ImgWarpSvc.WarpImageJSON(JSON); 

       DataContracts.BBIImgObject cloneImgObject = new DataContracts.BBIImgObject(); 
       cloneImgObject.Base64EncodedImageData = rslt; 
       cloneImgObject.BodyTypeID = imgObject.BodyTypeID; 

       return new ServiceResponse<DataContracts.BBIImgObject>(String.Empty, ServiceResponse<DataContracts.BBIImgObject>.ResponseTypeEnum.BbiSuccess, cloneImgObject); 
      } 
      catch (Exception ex) 
      { 
       writeMessage(ex.Message); 
       return new ServiceResponse<DataContracts.BBIImgObject>(ex.Message, ServiceResponse<DataContracts.BBIImgObject>.ResponseTypeEnum.BbiFailure, null); 
      } 
     } 

답변

1

당신은 쉽게 클라이언트 프로젝트에

  1. 이 서비스 클래스의 DLL을 포함 동일한 바이너리를 사용하여 클라이언트를 만들 수 있습니다.
  2. 서비스 인터페이스에서 채널 팩토리를 생성하십시오.
  3. 채널 팩터 리를 사용하십시오. The max message size quota for incoming messages (65536) ....To increase the quota, use the MaxReceivedMessageSize property

    또는 코드에서 :

    WebHttpBinding binding = new WebHttpBinding(); 
    binding.MaxReceivedMessageSize = 2147483647; 
    

요구 사항에 따라 자세한 내용은 최대 오류를받은 경우, 다음을 수행 할 필요가 http://msdn.microsoft.com/en-us/library/ms576132(v=vs.110).aspx

를 참조하십시오

마찬가지로 클라이언트 측에서도 마찬가지입니다.

+0

답장을 보내 주셔서 감사합니다. # 1 -> 내 REST 서비스는 별도의 서비스를 호출한다는 의미에서 클라이언트처럼 작동합니다. 그 별도의 서비스는 호스팅되는 응용 프로그램입니다 ... 런타임에 생성됩니다. 해당 서비스에 대한 DLL이 없습니다. # 2 -> 해당 서비스 인터페이스에 대한 참조를 얻으려면 어떻게해야합니까? 내가 추가 한 유일한 참고 자료는 서비스 자체에 대한 참조입니다. – tronious

+0

Dee Jay에게 감사드립니다. MaxReceivedMessageSize가 내 문제입니다. 게시물에 추가 코드를 추가했습니다. 그걸 검토해 주시겠습니까? 내 문제에 대한 추가 컨텍스트를 제공해야합니다. 실패한 전화 번호를 추가했습니다 – tronious

+0

Dee Jay ... 이것은 내 문제를 100 % 해결하지 못했지만 귀하의 답변이 절대로 올바른 방향으로 나를 가리켰습니다. 도움 주셔서 감사합니다. – tronious

관련 문제