2016-07-14 3 views
0

나는 지난 동안 클라이언트에 의해 사용 된 wcf 서비스를 가지고 있습니다.wcf 바인딩 - 서비스 및 클라이언트가 일치하지 않음

클라이언트와 서비스 모두 추가 설정이없는 basicHttpBinding을 사용합니다.

새로운 클라이언트가 대량의 데이터를 호출하여 서비스를 호출하게되어 클라이언트 측에서 예외가 발생하여 기본 65536 크기를 초과하게됩니다.

<services> 
    <service name="MyService" > 
     <endpoint 
      binding="basicHttpBinding" 
      bindingConfiguration="Service1BasicHttpBinding" 
      contract="MyServiceContract" /> 
    </service> 
</services> 

클라이언트 :

<client> 
    <endpoint 
     address="http:myendpoint" 
     binding="basicHttpBinding" 
     bindingConfiguration="Service1BasicHttpBinding" 
     contract="MyServiceContract" 
      name="MyService" /> 
</client> 
이 모두 서비스와 클라이언트, 서비스에 추가 된이 문제

<bindings> 
    <basicHttpBinding> 
     <binding 
      name="Service1BasicHttpBinding" 
      maxReceivedMessageSize="6024800" 
      maxBufferPoolSize="6024800"> 
     </binding> 
    </basicHttpBinding> 
</bindings> 

많은 답변에 제안

그래서 나는 maxReceivedMessageSize 추가

그리고 모든 것이 잘 작동합니다. 내 질문은 이 아니며은 다른 바인딩 된 클라이언트와 bindingConfiguration (Service1BasicHttpBinding)을 업데이트했으며 여전히 작동합니다. 왜이 기능이 작동합니까? 바인딩이 다르면 어째서 클라이언트와 서버가 작동하는지 알 수 없습니다.

답변

0

업데이트 된 설정은 클라이언트에만 해당되며 서비스에는 의미가 없으므로 (그 반대).

바인딩 프로토콜과 보안 설정은 서비스와 클라이언트간에 일치해야하지만 제한 시간, 최대 수신 메시지 크기, 리더 할당량 등과 같은 항목은 정의 된 구성 파일을 소유 한 응용 프로그램에만 적용됩니다.

즉, 클라이언트는 "나는 6024800이라는 메시지를 제외 할 수 있습니다."라고 말하고 서비스는 상관하지 않습니다. 이제 클라이언트가 으로 전화하려고 시도하면 서비스가 허용하는 것보다 큰 메시지를 서비스에 보내면 오류가 발생합니다.

관련 문제